Servers / VMs

Allowed HTTP methods

Method Description
GET get / list object/s
POST create new object/s
PUT update / modify object/s
DELETE delete object/s

Note

See RFC 2616 for more details on HTTP methods semantics

Listing

GET /servers/

Gets the list of servers to which the authenticated user has access.

Status Codes:
  • 200 – no error

Example request:

GET /api/2.0/servers/?limit=0 HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

Example response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "meta": {
        "limit": 0,
        "offset": 0,
        "total_count": 9
    },
    "objects": [
        {
            "name": "test_server_0",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/servers/36bb3ef5-c736-4b4f-ad67-f7c52e67daf7/",
            "runtime": null,
            "status": "stopped",
            "uuid": "36bb3ef5-c736-4b4f-ad67-f7c52e67daf7"
        },
        {
            "name": "test_start_stop_server_37",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/servers/e8383fc4-334a-43d0-920d-1ce46fcec194/",
            "runtime": null,
            "status": "stopping",
            "uuid": "e8383fc4-334a-43d0-920d-1ce46fcec194"
        },
        {
            "name": "test_start_stop_server_36",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/servers/2d1e33d0-b522-4abb-aed8-9a96d9a0ac79/",
            "runtime": null,
            "status": "stopping",
            "uuid": "2d1e33d0-b522-4abb-aed8-9a96d9a0ac79"
        },
        {
            "name": "test_start_stop_server_38",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/servers/ccb40020-f7e8-4d14-871b-e5f3e18305f0/",
            "runtime": null,
            "status": "stopping",
            "uuid": "ccb40020-f7e8-4d14-871b-e5f3e18305f0"
        },
        {
            "name": "test_start_stop_server_39",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/servers/d7b305be-c324-46b4-87be-a5331b1cff71/",
            "runtime": null,
            "status": "stopping",
            "uuid": "d7b305be-c324-46b4-87be-a5331b1cff71"
        },
        {
            "name": "test_server_4",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/servers/70cf198a-3e5d-4d36-a0bd-ec764a7b0541/",
            "runtime": null,
            "status": "stopped",
            "uuid": "70cf198a-3e5d-4d36-a0bd-ec764a7b0541"
        },
        {
            "name": "test_server_1",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/servers/dbed7cff-9adb-44aa-95fa-9dfbc95b251a/",
            "runtime": null,
            "status": "stopped",
            "uuid": "dbed7cff-9adb-44aa-95fa-9dfbc95b251a"
        },
        {
            "name": "test_server_3",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/servers/64b63b99-bebb-4166-8572-06d81f4ad991/",
            "runtime": null,
            "status": "stopped",
            "uuid": "64b63b99-bebb-4166-8572-06d81f4ad991"
        },
        {
            "name": "test_server_2",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/servers/0d26e0d3-c0a5-4712-abea-ab4bede69b1c/",
            "runtime": null,
            "status": "stopped",
            "uuid": "0d26e0d3-c0a5-4712-abea-ab4bede69b1c"
        }
    ]
}

Detailed listing

GET /servers/detail/

Gets the detailed list of servers to which the authenticated user has access.

Status Codes:
  • 200 – no error

Example request:

GET /api/2.0/servers/detail/?limit=0 HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

Example response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "meta": {
        "limit": 0,
        "offset": 0,
        "total_count": 9
    },
    "objects": [
        {
            "context": true,
            "cpu": 1000,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 536870912,
            "meta": {},
            "name": "test_server_0",
            "nics": [],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/36bb3ef5-c736-4b4f-ad67-f7c52e67daf7/",
            "runtime": null,
            "smp": 1,
            "status": "stopped",
            "tags": [],
            "uuid": "36bb3ef5-c736-4b4f-ad67-f7c52e67daf7",
            "vnc_password": "testserver"
        },
        {
            "context": true,
            "cpu": 500,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 536870912,
            "meta": {},
            "name": "test_start_stop_server_37",
            "nics": [],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/e8383fc4-334a-43d0-920d-1ce46fcec194/",
            "runtime": null,
            "smp": 1,
            "status": "stopping",
            "tags": [],
            "uuid": "e8383fc4-334a-43d0-920d-1ce46fcec194",
            "vnc_password": "testserver"
        },
        {
            "context": true,
            "cpu": 500,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 536870912,
            "meta": {},
            "name": "test_start_stop_server_36",
            "nics": [],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/2d1e33d0-b522-4abb-aed8-9a96d9a0ac79/",
            "runtime": null,
            "smp": 1,
            "status": "stopping",
            "tags": [],
            "uuid": "2d1e33d0-b522-4abb-aed8-9a96d9a0ac79",
            "vnc_password": "testserver"
        },
        {
            "context": true,
            "cpu": 500,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 536870912,
            "meta": {},
            "name": "test_start_stop_server_38",
            "nics": [],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/ccb40020-f7e8-4d14-871b-e5f3e18305f0/",
            "runtime": null,
            "smp": 1,
            "status": "stopping",
            "tags": [],
            "uuid": "ccb40020-f7e8-4d14-871b-e5f3e18305f0",
            "vnc_password": "testserver"
        },
        {
            "context": true,
            "cpu": 500,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 536870912,
            "meta": {},
            "name": "test_start_stop_server_39",
            "nics": [],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/d7b305be-c324-46b4-87be-a5331b1cff71/",
            "runtime": null,
            "smp": 1,
            "status": "stopping",
            "tags": [],
            "uuid": "d7b305be-c324-46b4-87be-a5331b1cff71",
            "vnc_password": "testserver"
        },
        {
            "context": true,
            "cpu": 1000,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 536870912,
            "meta": {},
            "name": "test_server_4",
            "nics": [],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/70cf198a-3e5d-4d36-a0bd-ec764a7b0541/",
            "runtime": null,
            "smp": 1,
            "status": "stopped",
            "tags": [],
            "uuid": "70cf198a-3e5d-4d36-a0bd-ec764a7b0541",
            "vnc_password": "testserver"
        },
        {
            "context": true,
            "cpu": 1000,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 536870912,
            "meta": {},
            "name": "test_server_1",
            "nics": [],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/dbed7cff-9adb-44aa-95fa-9dfbc95b251a/",
            "runtime": null,
            "smp": 1,
            "status": "stopped",
            "tags": [],
            "uuid": "dbed7cff-9adb-44aa-95fa-9dfbc95b251a",
            "vnc_password": "testserver"
        },
        {
            "context": true,
            "cpu": 1000,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 536870912,
            "meta": {},
            "name": "test_server_3",
            "nics": [],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/64b63b99-bebb-4166-8572-06d81f4ad991/",
            "runtime": null,
            "smp": 1,
            "status": "stopped",
            "tags": [],
            "uuid": "64b63b99-bebb-4166-8572-06d81f4ad991",
            "vnc_password": "testserver"
        },
        {
            "context": true,
            "cpu": 1000,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 536870912,
            "meta": {},
            "name": "test_server_2",
            "nics": [],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/0d26e0d3-c0a5-4712-abea-ab4bede69b1c/",
            "runtime": null,
            "smp": 1,
            "status": "stopped",
            "tags": [],
            "uuid": "0d26e0d3-c0a5-4712-abea-ab4bede69b1c",
            "vnc_password": "testserver"
        }
    ]
}

Creating

POST /servers/

Creates a new virtual server or multiple servers. The minimial amount of information you need to set is as follows

Status Codes:
  • 201 – object created

Example request:

POST /api/2.0/servers/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{
    "objects": [
        {
            "cpu": 1000,
            "mem": 536870912,
            "name": "testServerAcc",
            "vnc_password": "testserver"
        }
    ]
}

Example response:

HTTP/1.1 201 CREATED
Content-Type: application/json; charset=utf-8

{
    "objects": [
        {
            "context": true,
            "cpu": 1000,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 536870912,
            "meta": {},
            "name": "testServerAcc",
            "nics": [],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/f143dfc2-8155-4841-ae53-102af3222440/",
            "runtime": null,
            "smp": 1,
            "status": "stopped",
            "tags": [],
            "uuid": "f143dfc2-8155-4841-ae53-102af3222440",
            "vnc_password": "testserver"
        }
    ]
}

Editing

PUT /servers/{uuid}/

Edits a server. Used also for attaching NIC’s and drives to servers. Note that if a server is running, only name, meta, and tags fields can be changed, and all other changes to the definition of a running server will be ignored.

Status Codes:
  • 200 – no error

Example request:

PUT /api/2.0/servers/cfb395bb-5955-49ec-935d-a7577a646eb2/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{
    "cpu": 2000,
    "mem": 536870912,
    "name": "test_server_updated",
    "vnc_password": "updated_password"
}

Example response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "context": true,
    "cpu": 2000,
    "cpu_model": null,
    "cpus_instead_of_cores": false,
    "drives": [],
    "enable_numa": false,
    "hv_relaxed": false,
    "hv_tsc": false,
    "mem": 536870912,
    "meta": {},
    "name": "test_server_updated",
    "nics": [],
    "owner": {
        "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
        "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
    },
    "requirements": [],
    "resource_uri": "/api/2.0/servers/cfb395bb-5955-49ec-935d-a7577a646eb2/",
    "runtime": null,
    "smp": 1,
    "status": "stopped",
    "tags": [],
    "uuid": "cfb395bb-5955-49ec-935d-a7577a646eb2",
    "vnc_password": "updated_password"
}

Attach a drive

PUT /servers/{uuid}/

Attaching a drive is just an edit server operation.

Status Codes:
  • 200 – no error

Example request:

PUT /api/2.0/servers/cfb395bb-5955-49ec-935d-a7577a646eb2/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{
    "cpu": 2000,
    "drives": [
        {
            "boot_order": 1,
            "dev_channel": "0:0",
            "device": "virtio",
            "drive": "440af451-2948-4cff-924d-40b8bfcdbb51"
        }
    ],
    "mem": 536870912,
    "name": "test_server_updated",
    "vnc_password": "updated_password"
}

Example response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "context": true,
    "cpu": 2000,
    "cpu_model": null,
    "cpus_instead_of_cores": false,
    "drives": [
        {
            "boot_order": 1,
            "dev_channel": "0:0",
            "device": "virtio",
            "drive": {
                "resource_uri": "/api/2.0/drives/440af451-2948-4cff-924d-40b8bfcdbb51/",
                "uuid": "440af451-2948-4cff-924d-40b8bfcdbb51"
            },
            "runtime": null
        }
    ],
    "enable_numa": false,
    "hv_relaxed": false,
    "hv_tsc": false,
    "mem": 536870912,
    "meta": {
        "meta_key2": "value2",
        "meta_key3": "value3"
    },
    "name": "test_server_updated",
    "nics": [],
    "owner": {
        "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
        "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
    },
    "requirements": [],
    "resource_uri": "/api/2.0/servers/cfb395bb-5955-49ec-935d-a7577a646eb2/",
    "runtime": null,
    "smp": 1,
    "status": "stopped",
    "tags": [],
    "uuid": "cfb395bb-5955-49ec-935d-a7577a646eb2",
    "vnc_password": "updated_password"
}

Meta

It is possible to add arbitrary key-value data to a server definition. See Objects’ meta field for more information.

Device channel

Device channel is used to specify the controller number and unit number for each attached drive. This is used so every time you reboot your virtual machine, the drive remains on the same place in your guest OS ( ex: /dev/sdc ) You specify the channel in the following format - {controller}:{unit} with the following limits for ide and virtio device types:

  • ide - 0:0, 0:1, 1:0, 1:1 ( total of 4 drives, max 2 units per controller, i.e 0-1)
  • virtio - 0:0, ..., 0:5, ..., 1:0, etc ( total of 1024 drives, max 6 units per controller i.e 0-5)

Deleting

Single server

DELETE /servers/{uuid}/

Deletes a single server.

Status Codes:
  • 204 – No content, object deletion started.

Example request:

DELETE /api/2.0/servers/f143dfc2-8155-4841-ae53-102af3222440/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

Example response:

HTTP/1.1 204 NO CONTENT
Content-Type: text/html; charset=utf-8

Delete Server together with attached drives (recursive delete)

DELETE /servers/{uuid}/?recurse={recurse_option}

It is possible to delete a server together with it’s drives (recursive delete). There are three options: delete all attached drives, delete only disks(non-cdrom drives), or delete only attached cdroms. To recursively delete drives, supply a recurse URL parameter with a value as described in the following table:

Recurse option Effect
all_drives All attached drives regardless of media type will be deleted
disks Only attached drives with media type disk will be deleted
cdroms Only attached drives with media type cdrom will be deleted

Example request to delete a server with all attached drives:

A server is created with a cdrom and disk drives:

HTTP/1.1 201 CREATED
Content-Type: application/json; charset=utf-8

{
    "objects": [
        {
            "context": true,
            "cpu": 1000,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [
                {
                    "boot_order": 1,
                    "dev_channel": "0:0",
                    "device": "virtio",
                    "drive": {
                        "resource_uri": "/api/2.0/drives/f4d61242-23e6-49a2-81d8-9dc1b71940f8/",
                        "uuid": "f4d61242-23e6-49a2-81d8-9dc1b71940f8"
                    },
                    "runtime": null
                },
                {
                    "boot_order": null,
                    "dev_channel": "0:0",
                    "device": "ide",
                    "drive": {
                        "resource_uri": "/api/2.0/drives/b21e48e1-6563-4deb-9300-76654642cb93/",
                        "uuid": "b21e48e1-6563-4deb-9300-76654642cb93"
                    },
                    "runtime": null
                }
            ],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 268435456,
            "meta": {
                "description": "A full server with description"
            },
            "name": "test_acc_full_server",
            "nics": [
                {
                    "boot_order": null,
                    "firewall_policy": null,
                    "ip_v4_conf": {
                        "conf": "dhcp",
                        "ip": null
                    },
                    "ip_v6_conf": null,
                    "mac": "22:35:82:2b:4a:7c",
                    "model": "virtio",
                    "runtime": null,
                    "vlan": null
                }
            ],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/7785ef60-7a0b-4a11-ae67-29746d141f99/",
            "runtime": null,
            "smp": 1,
            "status": "stopped",
            "tags": [],
            "uuid": "7785ef60-7a0b-4a11-ae67-29746d141f99",
            "vnc_password": "tester"
        }
    ]
}

The following drives are available in the account:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "meta": {
        "limit": 0,
        "offset": 0,
        "total_count": 5
    },
    "objects": [
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [],
            "media": "disk",
            "meta": {},
            "mounted_on": [],
            "name": "test_drive_1",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/f4d61242-23e6-49a2-81d8-9dc1b71940f8/",
            "runtime": {
                "is_snapshotable": true,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 1024000000,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "f4d61242-23e6-49a2-81d8-9dc1b71940f8"
        },
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [],
            "media": "cdrom",
            "meta": {},
            "mounted_on": [],
            "name": "test_drive_2",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/b21e48e1-6563-4deb-9300-76654642cb93/",
            "runtime": {
                "is_snapshotable": true,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 1024000000,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "b21e48e1-6563-4deb-9300-76654642cb93"
        },
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [],
            "media": "disk",
            "meta": {
                "description": "",
                "install_notes": ""
            },
            "mounted_on": [],
            "name": "atom-qnez",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/a9b9eae5-096b-45a3-8b35-8be31547f749/",
            "runtime": {
                "is_snapshotable": true,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 11811160064,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "a9b9eae5-096b-45a3-8b35-8be31547f749"
        },
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [
                {
                    "amount": 1,
                    "license": {
                        "burstable": false,
                        "long_name": "Windows Server 2008 Standard",
                        "name": "msft_p73_04837",
                        "resource_uri": "/api/2.0/licenses/13/",
                        "type": "instance",
                        "user_metric": ""
                    },
                    "user": null
                }
            ],
            "media": "disk",
            "meta": {
                "arch": "32",
                "category": "general",
                "description": "Please refer to the install notes for a full guide to initial configuration.",
                "favourite": "False",
                "image_type": "preinst",
                "install_notes": "<script type=\"text/javascript\">alert(\"a\");</script>***You must update the default Administrator password for Windows Server Standard 2003***\\n\\nPre-installed Windows Server 2003 Standard 32bit English on 08/10/2010\\n==========================================================\\n\\n1. Connecting to your server via VNC\\n--------------------------------------------------\\n\\na) Having installed a compatible VNC client, open a VNC connection to your server.\\n\\nb) Enter your IP address and VNC password as displayed on your Server Summary Window.\\n\\nc) Start to configure your server.\\n\\n\\n2. Minimum Hardware Requirements\\n---------------------------------------------------\\n\\nThe recommended minimum hardware requirements as publishes by Microsoft can be found through \\n\\nthe following link:\\n\\nhttp://technet.microsoft.com/en-us/library/cc738496(WS.10).aspx\\n\\nWe recommend specifying a higher level of RAM for a better user experience.\\n\\n\\n3. Update your administrator password\\n-----------------------------------------------------\\n\\nThe default administrator password is set to: CloudSigma1\\n\\nPlease CHANGE this IMMEDIATELY after first logging on.\\n\\na) Select &quot;Start&quot; | &quot;Administrative Tools&quot; | &quot;Computer Management&quot;\\n\\nb) Select &quot;System Tools&quot; | &quot;Local Users and Groups&quot; | &quot;Users&quot;\\n\\nc) Right click on &quot;Administrator&quot; and select &quot;Set Password&quot;\\n\\nd) Enter a new administrative password\\n\\nProceed to select Users and Groups according to your Domain policies.\\n\\n4. Configuring your Networking\\n------------------------------------------\\n\\na) IP networking can be left as DHCP. Even if you are using a static IP address with this server our management layer will apply the same IP address via DHCP. Using DHCP ensures you will have no issues receiving the correct networking settings. We recommend using DHCP initially if only to receive all the correct networking settings.\\n\\nb) CloudSigma employs an open networking infrastructure. All ports are open for inbound and outbound traffic with the exception of port 25 (SMTP) which is blocked for trial users. It is important that you secure access to your server according to your needs.\\n\\n\\n5. Expanding your drive\\n--------------------------------\\n\\nThe system is fully installed, but you will need to extend the disk partition to cover the whole of your drive. To do this:\\n\\na) Open the &quot;Computer Management&quot; tool from &quot;Administrative Tools&quot; on the &quot;Start&quot; menu.\\n\\nb) Select &quot;Storage&quot; then &quot;Disk Management&quot; in the left hand pane.\\n\\nc) Right-click on the &quot;Unallocated&quot; partition volume and select &quot;New Partition&quot;.\\n\\nd) This will start the &quot;New Partition Wizard&quot;. For the purposes of these instructions we will extend the existing partition.\\n\\ne) Select &quot;Primary Partition&quot; and click &quot;Next&quot;.\\n\\nf) Select the maximum &quot;Partition size in MB&quot; you require or leave the default value. Click &quot;Next&quot;.\\n\\ng) Assign a drive letter, and click &quot;Next&quot;.\\n\\nh) Enter your Format Partition values including the &quot;File System&quot; type, &quot;Allocation unit size&quot; \\n\\nand a &quot;Volume label&quot;. We recommend leaving the default value for the File System format and the Allocation unit size. Click &quot;Next&quot; to continue.\\n\\ni) click Finish to complete the process. The new volume will now be formatted and setup.\\n\\nYou may also use third party tools to create and manage your partitions.\\n\\n\\n6. Enabling Remote Access\\n--------------------------------------\\n\\nAfter logging in to VNC for the first time to configure your new Windows server, we recommend \\nthat if you are logging in from a Windows Desktop that you enable Remote Desktop for better access performance. To do this, follow these instructions:\\n\\na) Select &quot;Start&quot; | &quot;Applications&quot; | &quot;Control Panel&quot;\\n\\nb) Select &quot;System&quot; and select the &quot;Remote&quot; tab\\n\\nc) Enable the &quot;Allow users to connect remotely to this computer&quot; under the &quot;System&quot; checkbox\\n\\n\\n7. Pinging Service\\n-------------------------\\n\\nThe Pinging service has been turned on by default, if you wish to disable it please follow these instructions:\\n\\na) Select &quot;Start&quot; | &quot;Applications&quot; | &quot;Control Panel&quot; | &quot;Windows Firewall&quot;\\n\\nb) Select the &quot;Advanced&quot; tab\\n\\nc) Click on the &quot;Settings&quot; button under the &quot;ICMP&quot; section\\n\\nd) Unselect &quot;Allow incoming echo request&quot; checkbox\\n\\ne) Press &quot;OK&quot; to return to the Windows Firewall, and press &quot;OK&quot; again to finalise the change\\n",
                "os": "windows",
                "paid": "True",
                "url": ""
            },
            "mounted_on": [],
            "name": "Windows Server 2003 Standard 32bit English Preinstalled System",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/f714eb49-e35a-438c-82d9-82960da8942f/",
            "runtime": {
                "is_snapshotable": false,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 13958643712,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "f714eb49-e35a-438c-82d9-82960da8942f"
        },
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [],
            "media": "disk",
            "meta": {
                "description": "",
                "install_notes": ""
            },
            "mounted_on": [],
            "name": "otom",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/36e1644f-5f3b-4601-b50a-e34e397803e9/",
            "runtime": {
                "is_snapshotable": false,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 11811160064,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "36e1644f-5f3b-4601-b50a-e34e397803e9"
        }
    ]
}

The server is recursively deleted with all drives:

DELETE /api/2.0/servers/7785ef60-7a0b-4a11-ae67-29746d141f99/?recurse=all_drives HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

After DELETE of the server the, drives attached to the server are deleted:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "meta": {
        "limit": 0,
        "offset": 0,
        "total_count": 3
    },
    "objects": [
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [],
            "media": "disk",
            "meta": {
                "description": "",
                "install_notes": ""
            },
            "mounted_on": [],
            "name": "atom-qnez",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/a9b9eae5-096b-45a3-8b35-8be31547f749/",
            "runtime": {
                "is_snapshotable": true,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 11811160064,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "a9b9eae5-096b-45a3-8b35-8be31547f749"
        },
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [],
            "media": "disk",
            "meta": {
                "description": "",
                "install_notes": ""
            },
            "mounted_on": [],
            "name": "otom",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/36e1644f-5f3b-4601-b50a-e34e397803e9/",
            "runtime": {
                "is_snapshotable": false,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 11811160064,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "36e1644f-5f3b-4601-b50a-e34e397803e9"
        },
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [
                {
                    "amount": 1,
                    "license": {
                        "burstable": false,
                        "long_name": "Windows Server 2008 Standard",
                        "name": "msft_p73_04837",
                        "resource_uri": "/api/2.0/licenses/13/",
                        "type": "instance",
                        "user_metric": ""
                    },
                    "user": null
                }
            ],
            "media": "disk",
            "meta": {
                "arch": "32",
                "category": "general",
                "description": "Please refer to the install notes for a full guide to initial configuration.",
                "favourite": "False",
                "image_type": "preinst",
                "install_notes": "<script type=\"text/javascript\">alert(\"a\");</script>***You must update the default Administrator password for Windows Server Standard 2003***\\n\\nPre-installed Windows Server 2003 Standard 32bit English on 08/10/2010\\n==========================================================\\n\\n1. Connecting to your server via VNC\\n--------------------------------------------------\\n\\na) Having installed a compatible VNC client, open a VNC connection to your server.\\n\\nb) Enter your IP address and VNC password as displayed on your Server Summary Window.\\n\\nc) Start to configure your server.\\n\\n\\n2. Minimum Hardware Requirements\\n---------------------------------------------------\\n\\nThe recommended minimum hardware requirements as publishes by Microsoft can be found through \\n\\nthe following link:\\n\\nhttp://technet.microsoft.com/en-us/library/cc738496(WS.10).aspx\\n\\nWe recommend specifying a higher level of RAM for a better user experience.\\n\\n\\n3. Update your administrator password\\n-----------------------------------------------------\\n\\nThe default administrator password is set to: CloudSigma1\\n\\nPlease CHANGE this IMMEDIATELY after first logging on.\\n\\na) Select &quot;Start&quot; | &quot;Administrative Tools&quot; | &quot;Computer Management&quot;\\n\\nb) Select &quot;System Tools&quot; | &quot;Local Users and Groups&quot; | &quot;Users&quot;\\n\\nc) Right click on &quot;Administrator&quot; and select &quot;Set Password&quot;\\n\\nd) Enter a new administrative password\\n\\nProceed to select Users and Groups according to your Domain policies.\\n\\n4. Configuring your Networking\\n------------------------------------------\\n\\na) IP networking can be left as DHCP. Even if you are using a static IP address with this server our management layer will apply the same IP address via DHCP. Using DHCP ensures you will have no issues receiving the correct networking settings. We recommend using DHCP initially if only to receive all the correct networking settings.\\n\\nb) CloudSigma employs an open networking infrastructure. All ports are open for inbound and outbound traffic with the exception of port 25 (SMTP) which is blocked for trial users. It is important that you secure access to your server according to your needs.\\n\\n\\n5. Expanding your drive\\n--------------------------------\\n\\nThe system is fully installed, but you will need to extend the disk partition to cover the whole of your drive. To do this:\\n\\na) Open the &quot;Computer Management&quot; tool from &quot;Administrative Tools&quot; on the &quot;Start&quot; menu.\\n\\nb) Select &quot;Storage&quot; then &quot;Disk Management&quot; in the left hand pane.\\n\\nc) Right-click on the &quot;Unallocated&quot; partition volume and select &quot;New Partition&quot;.\\n\\nd) This will start the &quot;New Partition Wizard&quot;. For the purposes of these instructions we will extend the existing partition.\\n\\ne) Select &quot;Primary Partition&quot; and click &quot;Next&quot;.\\n\\nf) Select the maximum &quot;Partition size in MB&quot; you require or leave the default value. Click &quot;Next&quot;.\\n\\ng) Assign a drive letter, and click &quot;Next&quot;.\\n\\nh) Enter your Format Partition values including the &quot;File System&quot; type, &quot;Allocation unit size&quot; \\n\\nand a &quot;Volume label&quot;. We recommend leaving the default value for the File System format and the Allocation unit size. Click &quot;Next&quot; to continue.\\n\\ni) click Finish to complete the process. The new volume will now be formatted and setup.\\n\\nYou may also use third party tools to create and manage your partitions.\\n\\n\\n6. Enabling Remote Access\\n--------------------------------------\\n\\nAfter logging in to VNC for the first time to configure your new Windows server, we recommend \\nthat if you are logging in from a Windows Desktop that you enable Remote Desktop for better access performance. To do this, follow these instructions:\\n\\na) Select &quot;Start&quot; | &quot;Applications&quot; | &quot;Control Panel&quot;\\n\\nb) Select &quot;System&quot; and select the &quot;Remote&quot; tab\\n\\nc) Enable the &quot;Allow users to connect remotely to this computer&quot; under the &quot;System&quot; checkbox\\n\\n\\n7. Pinging Service\\n-------------------------\\n\\nThe Pinging service has been turned on by default, if you wish to disable it please follow these instructions:\\n\\na) Select &quot;Start&quot; | &quot;Applications&quot; | &quot;Control Panel&quot; | &quot;Windows Firewall&quot;\\n\\nb) Select the &quot;Advanced&quot; tab\\n\\nc) Click on the &quot;Settings&quot; button under the &quot;ICMP&quot; section\\n\\nd) Unselect &quot;Allow incoming echo request&quot; checkbox\\n\\ne) Press &quot;OK&quot; to return to the Windows Firewall, and press &quot;OK&quot; again to finalise the change\\n",
                "os": "windows",
                "paid": "True",
                "url": ""
            },
            "mounted_on": [],
            "name": "Windows Server 2003 Standard 32bit English Preinstalled System",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/f714eb49-e35a-438c-82d9-82960da8942f/",
            "runtime": {
                "is_snapshotable": false,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 13958643712,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "f714eb49-e35a-438c-82d9-82960da8942f"
        }
    ]
}

Example request to delete a server with attached disk drives and leave CDROMs:

A server is created with a cdrom and disk drives:

HTTP/1.1 201 CREATED
Content-Type: application/json; charset=utf-8

{
    "objects": [
        {
            "context": true,
            "cpu": 1000,
            "cpu_model": null,
            "cpus_instead_of_cores": false,
            "drives": [
                {
                    "boot_order": 1,
                    "dev_channel": "0:0",
                    "device": "virtio",
                    "drive": {
                        "resource_uri": "/api/2.0/drives/f4d61242-23e6-49a2-81d8-9dc1b71940f8/",
                        "uuid": "f4d61242-23e6-49a2-81d8-9dc1b71940f8"
                    },
                    "runtime": null
                },
                {
                    "boot_order": null,
                    "dev_channel": "0:0",
                    "device": "ide",
                    "drive": {
                        "resource_uri": "/api/2.0/drives/b21e48e1-6563-4deb-9300-76654642cb93/",
                        "uuid": "b21e48e1-6563-4deb-9300-76654642cb93"
                    },
                    "runtime": null
                }
            ],
            "enable_numa": false,
            "hv_relaxed": false,
            "hv_tsc": false,
            "mem": 268435456,
            "meta": {
                "description": "A full server with description"
            },
            "name": "test_acc_full_server",
            "nics": [
                {
                    "boot_order": null,
                    "firewall_policy": null,
                    "ip_v4_conf": {
                        "conf": "dhcp",
                        "ip": null
                    },
                    "ip_v6_conf": null,
                    "mac": "22:35:82:2b:4a:7c",
                    "model": "virtio",
                    "runtime": null,
                    "vlan": null
                }
            ],
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "requirements": [],
            "resource_uri": "/api/2.0/servers/7785ef60-7a0b-4a11-ae67-29746d141f99/",
            "runtime": null,
            "smp": 1,
            "status": "stopped",
            "tags": [],
            "uuid": "7785ef60-7a0b-4a11-ae67-29746d141f99",
            "vnc_password": "tester"
        }
    ]
}

The following drives are available in the account:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "meta": {
        "limit": 0,
        "offset": 0,
        "total_count": 5
    },
    "objects": [
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [],
            "media": "disk",
            "meta": {},
            "mounted_on": [],
            "name": "test_drive_1",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/e4268acb-ad00-42cf-bb9b-40d8df735774/",
            "runtime": {
                "is_snapshotable": true,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 1024000000,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "e4268acb-ad00-42cf-bb9b-40d8df735774"
        },
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [],
            "media": "cdrom",
            "meta": {},
            "mounted_on": [],
            "name": "test_drive_2",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/da2f6084-fbeb-4afe-aa8e-93de0b2e1011/",
            "runtime": {
                "is_snapshotable": true,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 1024000000,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "da2f6084-fbeb-4afe-aa8e-93de0b2e1011"
        },
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [],
            "media": "disk",
            "meta": {
                "description": "",
                "install_notes": ""
            },
            "mounted_on": [],
            "name": "atom-qnez",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/a9b9eae5-096b-45a3-8b35-8be31547f749/",
            "runtime": {
                "is_snapshotable": true,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 11811160064,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "a9b9eae5-096b-45a3-8b35-8be31547f749"
        },
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [
                {
                    "amount": 1,
                    "license": {
                        "burstable": false,
                        "long_name": "Windows Server 2008 Standard",
                        "name": "msft_p73_04837",
                        "resource_uri": "/api/2.0/licenses/13/",
                        "type": "instance",
                        "user_metric": ""
                    },
                    "user": null
                }
            ],
            "media": "disk",
            "meta": {
                "arch": "32",
                "category": "general",
                "description": "Please refer to the install notes for a full guide to initial configuration.",
                "favourite": "False",
                "image_type": "preinst",
                "install_notes": "<script type=\"text/javascript\">alert(\"a\");</script>***You must update the default Administrator password for Windows Server Standard 2003***\\n\\nPre-installed Windows Server 2003 Standard 32bit English on 08/10/2010\\n==========================================================\\n\\n1. Connecting to your server via VNC\\n--------------------------------------------------\\n\\na) Having installed a compatible VNC client, open a VNC connection to your server.\\n\\nb) Enter your IP address and VNC password as displayed on your Server Summary Window.\\n\\nc) Start to configure your server.\\n\\n\\n2. Minimum Hardware Requirements\\n---------------------------------------------------\\n\\nThe recommended minimum hardware requirements as publishes by Microsoft can be found through \\n\\nthe following link:\\n\\nhttp://technet.microsoft.com/en-us/library/cc738496(WS.10).aspx\\n\\nWe recommend specifying a higher level of RAM for a better user experience.\\n\\n\\n3. Update your administrator password\\n-----------------------------------------------------\\n\\nThe default administrator password is set to: CloudSigma1\\n\\nPlease CHANGE this IMMEDIATELY after first logging on.\\n\\na) Select &quot;Start&quot; | &quot;Administrative Tools&quot; | &quot;Computer Management&quot;\\n\\nb) Select &quot;System Tools&quot; | &quot;Local Users and Groups&quot; | &quot;Users&quot;\\n\\nc) Right click on &quot;Administrator&quot; and select &quot;Set Password&quot;\\n\\nd) Enter a new administrative password\\n\\nProceed to select Users and Groups according to your Domain policies.\\n\\n4. Configuring your Networking\\n------------------------------------------\\n\\na) IP networking can be left as DHCP. Even if you are using a static IP address with this server our management layer will apply the same IP address via DHCP. Using DHCP ensures you will have no issues receiving the correct networking settings. We recommend using DHCP initially if only to receive all the correct networking settings.\\n\\nb) CloudSigma employs an open networking infrastructure. All ports are open for inbound and outbound traffic with the exception of port 25 (SMTP) which is blocked for trial users. It is important that you secure access to your server according to your needs.\\n\\n\\n5. Expanding your drive\\n--------------------------------\\n\\nThe system is fully installed, but you will need to extend the disk partition to cover the whole of your drive. To do this:\\n\\na) Open the &quot;Computer Management&quot; tool from &quot;Administrative Tools&quot; on the &quot;Start&quot; menu.\\n\\nb) Select &quot;Storage&quot; then &quot;Disk Management&quot; in the left hand pane.\\n\\nc) Right-click on the &quot;Unallocated&quot; partition volume and select &quot;New Partition&quot;.\\n\\nd) This will start the &quot;New Partition Wizard&quot;. For the purposes of these instructions we will extend the existing partition.\\n\\ne) Select &quot;Primary Partition&quot; and click &quot;Next&quot;.\\n\\nf) Select the maximum &quot;Partition size in MB&quot; you require or leave the default value. Click &quot;Next&quot;.\\n\\ng) Assign a drive letter, and click &quot;Next&quot;.\\n\\nh) Enter your Format Partition values including the &quot;File System&quot; type, &quot;Allocation unit size&quot; \\n\\nand a &quot;Volume label&quot;. We recommend leaving the default value for the File System format and the Allocation unit size. Click &quot;Next&quot; to continue.\\n\\ni) click Finish to complete the process. The new volume will now be formatted and setup.\\n\\nYou may also use third party tools to create and manage your partitions.\\n\\n\\n6. Enabling Remote Access\\n--------------------------------------\\n\\nAfter logging in to VNC for the first time to configure your new Windows server, we recommend \\nthat if you are logging in from a Windows Desktop that you enable Remote Desktop for better access performance. To do this, follow these instructions:\\n\\na) Select &quot;Start&quot; | &quot;Applications&quot; | &quot;Control Panel&quot;\\n\\nb) Select &quot;System&quot; and select the &quot;Remote&quot; tab\\n\\nc) Enable the &quot;Allow users to connect remotely to this computer&quot; under the &quot;System&quot; checkbox\\n\\n\\n7. Pinging Service\\n-------------------------\\n\\nThe Pinging service has been turned on by default, if you wish to disable it please follow these instructions:\\n\\na) Select &quot;Start&quot; | &quot;Applications&quot; | &quot;Control Panel&quot; | &quot;Windows Firewall&quot;\\n\\nb) Select the &quot;Advanced&quot; tab\\n\\nc) Click on the &quot;Settings&quot; button under the &quot;ICMP&quot; section\\n\\nd) Unselect &quot;Allow incoming echo request&quot; checkbox\\n\\ne) Press &quot;OK&quot; to return to the Windows Firewall, and press &quot;OK&quot; again to finalise the change\\n",
                "os": "windows",
                "paid": "True",
                "url": ""
            },
            "mounted_on": [],
            "name": "Windows Server 2003 Standard 32bit English Preinstalled System",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/f714eb49-e35a-438c-82d9-82960da8942f/",
            "runtime": {
                "is_snapshotable": false,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 13958643712,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "f714eb49-e35a-438c-82d9-82960da8942f"
        },
        {
            "affinities": [],
            "allow_multimount": false,
            "jobs": [],
            "licenses": [],
            "media": "disk",
            "meta": {
                "description": "",
                "install_notes": ""
            },
            "mounted_on": [],
            "name": "otom",
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/36e1644f-5f3b-4601-b50a-e34e397803e9/",
            "runtime": {
                "is_snapshotable": false,
                "snapshots_allocated_size": 0,
                "storage_type": "dssd"
            },
            "size": 11811160064,
            "snapshots": [],
            "status": "unmounted",
            "storage_type": "dssd",
            "tags": [],
            "uuid": "36e1644f-5f3b-4601-b50a-e34e397803e9"
        }
    ]
}

The server is recursively deleted with all attached drives with media type disk:

DELETE /api/2.0/servers/e2a22e69-d898-48b3-8e9a-b3d752a26df9/?recurse=disks HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

After DELETE of the server, only drives with media type disk attached to the server are deleted. CDROMs are left intact:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "meta": {
        "limit": 0,
        "offset": 0,
        "total_count": 4
    },
    "objects": [
        {
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/da2f6084-fbeb-4afe-aa8e-93de0b2e1011/",
            "status": "unmounted",
            "uuid": "da2f6084-fbeb-4afe-aa8e-93de0b2e1011"
        },
        {
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/a9b9eae5-096b-45a3-8b35-8be31547f749/",
            "status": "unmounted",
            "uuid": "a9b9eae5-096b-45a3-8b35-8be31547f749"
        },
        {
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/f714eb49-e35a-438c-82d9-82960da8942f/",
            "status": "unmounted",
            "uuid": "f714eb49-e35a-438c-82d9-82960da8942f"
        },
        {
            "owner": {
                "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
                "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
            },
            "resource_uri": "/api/2.0/drives/36e1644f-5f3b-4601-b50a-e34e397803e9/",
            "status": "unmounted",
            "uuid": "36e1644f-5f3b-4601-b50a-e34e397803e9"
        }
    ]
}

Server Runtime and Server Details

GET /servers/{uuid}/

Gets detailed information for server identified by server_uuid.

Status Codes:
  • 200 – no error

If the server is started the definition includes a runtime attribute. The runtime object contains information on, when the server was started, and runtime information about the server NICs, such as how much traffic went through the interface and what are the dynamic IPs assigned to the NIC. The NIC runtime is also available in the NIC definition of the running server.

Example request:

GET /api/2.0/servers/7a7181c7-eb25-4ad4-b6fa-6b8dbe9f2830/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

Example response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "context": true,
    "cpu": 1000,
    "cpu_model": null,
    "cpus_instead_of_cores": false,
    "drives": [
        {
            "boot_order": 1,
            "dev_channel": "0:0",
            "device": "virtio",
            "drive": {
                "resource_uri": "/api/2.0/drives/815eb6bc-8d3f-4642-b22b-b3c86dc2a02b/",
                "uuid": "815eb6bc-8d3f-4642-b22b-b3c86dc2a02b"
            },
            "runtime": {
                "io": {
                    "bytes_read": 430080,
                    "bytes_written": 0,
                    "count_read": 88,
                    "count_written": 0
                }
            }
        }
    ],
    "enable_numa": false,
    "hv_relaxed": false,
    "hv_tsc": false,
    "mem": 536870912,
    "meta": {},
    "name": "testServerAcc",
    "nics": [
        {
            "boot_order": null,
            "firewall_policy": null,
            "ip_v4_conf": {
                "conf": "dhcp",
                "ip": null
            },
            "ip_v6_conf": null,
            "mac": "22:0a:18:ba:21:9b",
            "model": "virtio",
            "runtime": {
                "interface_type": "public",
                "io": {
                    "bytes_recv": 0,
                    "bytes_sent": 0,
                    "packets_recv": 0,
                    "packets_sent": 0
                },
                "ip_v4": {
                    "resource_uri": "/api/2.0/ips/31.171.248.69/",
                    "uuid": "31.171.248.69"
                },
                "ip_v6": null
            },
            "vlan": null
        }
    ],
    "owner": {
        "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
        "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
    },
    "requirements": [],
    "resource_uri": "/api/2.0/servers/7a7181c7-eb25-4ad4-b6fa-6b8dbe9f2830/",
    "runtime": {
        "active_since": "2013-12-10T11:39:36+00:00",
        "nics": [
            {
                "interface_type": "public",
                "io": {
                    "bytes_recv": 0,
                    "bytes_sent": 0,
                    "packets_recv": 0,
                    "packets_sent": 0
                },
                "ip_v4": {
                    "resource_uri": "/api/2.0/ips/31.171.248.69/",
                    "uuid": "31.171.248.69"
                },
                "ip_v6": null,
                "mac": "22:0a:18:ba:21:9b"
            }
        ]
    },
    "smp": 1,
    "status": "running",
    "tags": [],
    "uuid": "7a7181c7-eb25-4ad4-b6fa-6b8dbe9f2830",
    "vnc_password": "testserver"
}

Server Actions

Start

POST /servers/{uuid}/action/?do=start

Starts a server with specific UUID.

Status Codes:
  • 202 – Action accepted, execution is proceeding.

Example request:

POST /api/2.0/servers/f143dfc2-8155-4841-ae53-102af3222440/action/?do=start HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{}

Example response:

HTTP/1.1 202 ACCEPTED
Content-Type: application/json; charset=utf-8

{
    "action": "start",
    "result": "success",
    "uuid": "f143dfc2-8155-4841-ae53-102af3222440"
}

Warning

Servers have some default network restrictions, applied depending on your user state. Please refer to the default restrictions section the Firewall policies documentation

Stop

POST /servers/{uuid}/action/?do=stop

Stops a server with specific UUID.

Status Codes:
  • 202 – Action accepted, execution is proceeding.

Example request:

POST /api/2.0/servers/f143dfc2-8155-4841-ae53-102af3222440/action/?do=stop HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{}

Example response:

HTTP/1.1 202 ACCEPTED
Content-Type: application/json; charset=utf-8

{
    "action": "stop",
    "result": "success",
    "uuid": "f143dfc2-8155-4841-ae53-102af3222440"
}

Start in a separate availability group

It is possible to hint the system which servers are preferred to run on separate hardware host. See Starting Servers in a Different Availability Group (Start Avoid).

Open VNC Tunnel

POST /servers/{uuid}/action/?do=open_vnc

Opens a VNC tunnel to a server with specific UUID.

Status Codes:
  • 202 – Action accepted, execution is proceeding.

Note

VNC URL will be different each time you close/open the tunnel.

Example request:

POST /api/2.0/servers/cbfa0d17-641c-4f50-84ed-336a82fafd66/action/?do=open_vnc HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{}

Example response:

HTTP/1.1 202 ACCEPTED
Content-Type: application/json; charset=utf-8

{
    "action": "open_vnc",
    "result": "success",
    "uuid": "cbfa0d17-641c-4f50-84ed-336a82fafd66",
    "vnc_url": "vnc://turloapi-staging.lvs.cloudsigma.com:44319"
}

Close VNC Tunnel

POST /servers/{uuid}/action/?do=close_vnc

Closes a VNC tunnel to a server with specific UUID.

Status Codes:
  • 202 – Action accepted, execution is proceeding.

Example request:

POST /api/2.0/servers/cbfa0d17-641c-4f50-84ed-336a82fafd66/action/?do=close_vnc HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{}

Example response:

HTTP/1.1 202 ACCEPTED
Content-Type: application/json; charset=utf-8

{
    "action": "close_vnc",
    "result": "success",
    "uuid": "cbfa0d17-641c-4f50-84ed-336a82fafd66"
}

Cloning

POST /servers/{uuid}/action/?do=clone
statuscode 202:Action accepted, execution is proceeding.

Clones a server. Does cascading clone of server drives, i.e. all disk drives attached to the server are cloned and attached to the new server. CDROM drives attached to the clone source are attached to the clone. IPs of the cloned server are set to DHCP. All other properties of the clone are equal to the original.

The optional body can contain a name attribute, which will be the name of the newly-cloned server and/or random_vnc_password boolean attribute which if set will generate a new vnc password for the new server.

Example clone source server:

{
    "context": true,
    "cpu": 1000,
    "cpu_model": null,
    "cpus_instead_of_cores": false,
    "drives": [],
    "enable_numa": false,
    "hv_relaxed": false,
    "hv_tsc": false,
    "mem": 536870912,
    "meta": {},
    "name": "testServerAcc",
    "nics": [],
    "owner": {
        "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
        "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
    },
    "requirements": [],
    "resource_uri": "/api/2.0/servers/7e76c0b8-87b4-42f7-a690-b06546418e27/",
    "runtime": null,
    "smp": 1,
    "status": "stopped",
    "tags": [],
    "uuid": "7e76c0b8-87b4-42f7-a690-b06546418e27",
    "vnc_password": "testserver"
}

Example clone request:

POST /api/2.0/servers/7e76c0b8-87b4-42f7-a690-b06546418e27/action/?do=clone HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{
    "name": "test cloned server name",
    "random_vnc_password": true
}

Example clone response:

HTTP/1.1 202 ACCEPTED
Content-Type: application/json; charset=utf-8

{
    "context": true,
    "cpu": 1000,
    "cpu_model": null,
    "cpus_instead_of_cores": false,
    "drives": [],
    "enable_numa": false,
    "hv_relaxed": false,
    "hv_tsc": false,
    "mem": 536870912,
    "meta": {},
    "name": "test cloned server name",
    "nics": [],
    "owner": {
        "resource_uri": "/api/2.0/user/42cb107b-d57a-4808-93d9-2d3f9ae4fe71/",
        "uuid": "42cb107b-d57a-4808-93d9-2d3f9ae4fe71"
    },
    "requirements": [],
    "resource_uri": "/api/2.0/servers/5a132abb-ddf1-42de-9c83-05b2efe1b896/",
    "runtime": null,
    "smp": 1,
    "status": "stopped",
    "tags": [],
    "uuid": "5a132abb-ddf1-42de-9c83-05b2efe1b896",
    "vnc_password": "yEgYtpxj"
}

Cloning with Drives on Different Storage (Avoid)

It is possible to hint the system which drives are preferred to be on separate physical storage host. See Creating Drives in a Different Availability Group (Create/Clone Avoid). I

Server NIC Configurations

The network interfaces are configured in the “nics” attribute. For more information on configuring network interfaces check Server Network Interfaces section.

Here is an example of defining a network interface with a dynamically assigned IP (for brevity only the “nics” attribute of the definitions is shown):

PUT /api/2.0/servers/6e4af205-09d7-4274-b75a-d0aa534afc44/ HTTP/1.1
Content-Type: application/json
Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop

{
    "nics": [
        {
            "vlan": "fda95788-5fee-4555-8561-b69b943fca69"
        }
    ]
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "nics": [
        {
            "boot_order": null,
            "firewall_policy": null,
            "ip_v4_conf": null,
            "ip_v6_conf": null,
            "mac": "22:24:d4:26:fd:73",
            "model": "virtio",
            "runtime": null,
            "vlan": {
                "resource_uri": "/api/2.0/vlans/fda95788-5fee-4555-8561-b69b943fca69/",
                "uuid": "fda95788-5fee-4555-8561-b69b943fca69"
            }
        }
    ]
}

Availability groups

It is possible to query which servers share common hardware hosts. See Server availability groups.

Advanced settings

On every server configuration there are a few advanced options you can setup.

{
    "cpus_instead_of_cores": false,
    "enable_numa": false,
    "hv_relaxed": false,
    "hv_tsc": false
}
  • cpus_instead_of_cores:
    • Type: true/false
    • Description: selects whether the SMP is exposed as cores of a single CPU or separate CPUs. This should be set to false for Windows, because there are license requirements for multiple CPUs.
  • enable_numa:
    • Type: true/false
    • Description: This option exposes the NUMA/CPU topology of the hypervisor to the virtual machine. It boosts performance for NUMA aware applications. The option should be set to true for guests with SMP bigger than 6, since this is the number of cores we have per NUMA node on the hypervisor. If set to true, cpus_instead_of_cores should also be set to true for Linux, because some Linux distributions do not support multiple NUMA nodes on multple CPU cores, but only on multiple CPUs.
  • hv_relaxed
    • Type: true/false
    • Description: Relax constraints on timers. This improves the behavior of VMs running Windows.
  • hv_tsc:
    • Type: true/false
    • Description: Enables more precise timers for Windows. This boost performance for timer specific code.

Warning

hv_relaxed and hv_tsc should be set to false for VMs running Linux

Server State Diagram

_images/ServerStates.png

Schema

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "allowed_detail_http_methods": [
        "get",
        "put",
        "delete"
    ],
    "allowed_list_http_methods": [
        "get",
        "put",
        "delete",
        "post"
    ],
    "default_format": "application/json",
    "default_limit": 20,
    "fields": {
        "context": {
            "default": true,
            "help_text": "Enable guest context serial device",
            "readonly": false,
            "required": false,
            "type": "boolean"
        },
        "cpu": {
            "default": null,
            "help_text": "Server's CPU Clock speed measured in MHz",
            "readonly": false,
            "required": true,
            "type": "integer"
        },
        "cpu_model": {
            "choices": [
                "kvm64"
            ],
            "default": null,
            "help_text": "Choose the virtual CPU model, for mitigating compatibility issues between the guest operating system and the underlying host's CPU. If not specified, all of the hypervisor's CPU capabilities are passed directly to the virtual machine.",
            "readonly": false,
            "required": false,
            "type": "string"
        },
        "cpus_instead_of_cores": {
            "default": false,
            "help_text": "Expose server SMPs as separate CPUs, instead of cores of a single CPU.",
            "readonly": false,
            "required": false,
            "type": "boolean"
        },
        "drives": {
            "default": [],
            "fields": {
                "boot_order": {
                    "default": null,
                    "help_text": "Drive boot order",
                    "readonly": false,
                    "required": false,
                    "type": "integer"
                },
                "dev_channel": {
                    "default": null,
                    "help_text": "Device channel in format {controller:unit} ex. 0:1, 0:2, etc. Keep in mind that there are limits based on emulation type - for example ide can have up to 2 controllers, 2 units each.",
                    "readonly": false,
                    "required": true,
                    "type": "string"
                },
                "device": {
                    "choices": [
                        "ide",
                        "virtio"
                    ],
                    "default": null,
                    "help_text": "Device emulation type",
                    "readonly": false,
                    "required": true,
                    "type": "string"
                },
                "drive": {
                    "default": null,
                    "help_text": "Drive UUID",
                    "readonly": false,
                    "required": true,
                    "type": "related"
                },
                "runtime": {
                    "default": "No default provided.",
                    "fields": {
                        "io": {
                            "default": null,
                            "fields": {
                                "bytes_read": {
                                    "default": 0,
                                    "help_text": "Integer data. Ex: 2673",
                                    "readonly": false,
                                    "required": true,
                                    "type": "integer"
                                },
                                "bytes_written": {
                                    "default": 0,
                                    "help_text": "Integer data. Ex: 2673",
                                    "readonly": false,
                                    "required": true,
                                    "type": "integer"
                                },
                                "count_read": {
                                    "default": 0,
                                    "help_text": "Integer data. Ex: 2673",
                                    "readonly": false,
                                    "required": true,
                                    "type": "integer"
                                },
                                "count_written": {
                                    "default": 0,
                                    "help_text": "Integer data. Ex: 2673",
                                    "readonly": false,
                                    "required": true,
                                    "type": "integer"
                                }
                            },
                            "help_text": "A single related resource. Can be either a URI or set of nested resource data.",
                            "readonly": false,
                            "required": false,
                            "type": "related"
                        }
                    },
                    "help_text": "Attached drive's runtime information",
                    "readonly": true,
                    "required": false,
                    "type": "related"
                }
            },
            "help_text": "List of attached Drives to server",
            "readonly": false,
            "required": false,
            "type": "related"
        },
        "enable_numa": {
            "default": false,
            "help_text": "Expose NUMA topology to the server.",
            "readonly": false,
            "required": false,
            "type": "boolean"
        },
        "hv_relaxed": {
            "default": false,
            "help_text": "Improve performance of Windows servers.",
            "readonly": false,
            "required": false,
            "type": "boolean"
        },
        "hv_tsc": {
            "default": false,
            "help_text": "Improves performance of Windows servers with the trade off that the servers cannot be live migrated.",
            "readonly": false,
            "required": false,
            "type": "boolean"
        },
        "mem": {
            "default": null,
            "help_text": "Server's Random Access Memory measured in bytes",
            "readonly": false,
            "required": true,
            "type": "integer"
        },
        "meta": {
            "default": {},
            "help_text": "User assigned meta information for this server",
            "readonly": false,
            "required": false,
            "type": "dict"
        },
        "name": {
            "default": null,
            "help_text": "Human readable name of server",
            "readonly": false,
            "required": true,
            "type": "string"
        },
        "nics": {
            "default": [],
            "fields": {
                "boot_order": {
                    "default": null,
                    "help_text": "Device boot order",
                    "readonly": false,
                    "required": false,
                    "type": "integer"
                },
                "firewall_policy": {
                    "default": null,
                    "help_text": "Firewall policy",
                    "readonly": false,
                    "required": false,
                    "type": "related"
                },
                "ip_v4_conf": {
                    "default": null,
                    "fields": {
                        "conf": {
                            "choices": [
                                "dhcp",
                                "static",
                                "manual"
                            ],
                            "default": null,
                            "help_text": "Configuration type",
                            "readonly": false,
                            "required": false,
                            "type": "string"
                        },
                        "ip": {
                            "default": null,
                            "help_text": "An IP address reference. Only used in 'static' IP configuration type",
                            "readonly": false,
                            "required": false,
                            "type": "related"
                        }
                    },
                    "help_text": "Public IPv4 configuration",
                    "readonly": false,
                    "required": false,
                    "type": "related"
                },
                "ip_v6_conf": {
                    "default": null,
                    "fields": {
                        "conf": {
                            "choices": [
                                "dhcp",
                                "static",
                                "manual"
                            ],
                            "default": null,
                            "help_text": "Configuration type",
                            "readonly": false,
                            "required": false,
                            "type": "string"
                        },
                        "ip": {
                            "default": null,
                            "help_text": "An IP address reference. Only used in 'static' IP configuration type",
                            "readonly": false,
                            "required": false,
                            "type": "related"
                        }
                    },
                    "help_text": "Public IPv6 configuration",
                    "readonly": false,
                    "required": false,
                    "type": "related"
                },
                "mac": {
                    "default": null,
                    "help_text": "MAC address of the server NIC",
                    "readonly": false,
                    "required": true,
                    "type": "string"
                },
                "model": {
                    "choices": [
                        "ne2k_isa",
                        "i82551",
                        "i82557b",
                        "i82559er",
                        "ne2k_pci",
                        "pcnet",
                        "rtl8139",
                        "e1000",
                        "virtio"
                    ],
                    "default": null,
                    "help_text": "Model of NIC",
                    "readonly": false,
                    "required": false,
                    "type": "string"
                },
                "runtime": {
                    "default": "No default provided.",
                    "fields": {
                        "interface_type": {
                            "choices": [
                                "public",
                                "private"
                            ],
                            "default": null,
                            "help_text": "Type of interface",
                            "readonly": false,
                            "required": true,
                            "type": "string"
                        },
                        "io": {
                            "default": null,
                            "fields": {
                                "bytes_recv": {
                                    "default": 0,
                                    "help_text": "Bytes received on this interface",
                                    "readonly": false,
                                    "required": false,
                                    "type": "integer"
                                },
                                "bytes_sent": {
                                    "default": 0,
                                    "help_text": "Packets received on this interface",
                                    "readonly": false,
                                    "required": false,
                                    "type": "integer"
                                },
                                "packets_recv": {
                                    "default": 0,
                                    "help_text": "Bytes sent from this interface",
                                    "readonly": false,
                                    "required": false,
                                    "type": "integer"
                                },
                                "packets_sent": {
                                    "default": 0,
                                    "help_text": "Packets sent from this interface",
                                    "readonly": false,
                                    "required": false,
                                    "type": "integer"
                                }
                            },
                            "help_text": "NIC runtime Input and Output data",
                            "readonly": false,
                            "required": false,
                            "type": "related"
                        },
                        "ip_v4": {
                            "default": null,
                            "help_text": "Public IPv4 configuration",
                            "readonly": false,
                            "required": false,
                            "type": "related"
                        },
                        "ip_v6": {
                            "default": null,
                            "help_text": "Public IPv6 configuration",
                            "readonly": false,
                            "required": false,
                            "type": "string"
                        }
                    },
                    "help_text": "NIC runtime information",
                    "readonly": true,
                    "required": false,
                    "type": "related"
                },
                "vlan": {
                    "default": null,
                    "help_text": "UUID of the private VLAN",
                    "readonly": false,
                    "required": false,
                    "type": "related"
                }
            },
            "help_text": "The list of nics attached to this server",
            "readonly": false,
            "required": false,
            "type": "related"
        },
        "owner": {
            "default": null,
            "help_text": "UUID of the server owner",
            "readonly": true,
            "required": true,
            "type": "related"
        },
        "requirements": {
            "default": [],
            "help_text": "A collection of special requirements for this server",
            "readonly": false,
            "required": false,
            "type": "list"
        },
        "resource_uri": {
            "default": "No default provided.",
            "help_text": "Unicode string data. Ex: \"Hello World\"",
            "readonly": true,
            "required": true,
            "type": "string"
        },
        "runtime": {
            "default": "No default provided.",
            "fields": {
                "active_since": {
                    "default": "No default provided.",
                    "help_text": "Datetime object representing the exact time the guest was started.",
                    "readonly": false,
                    "required": true,
                    "type": "string"
                },
                "nics": {
                    "default": [],
                    "fields": {
                        "interface_type": {
                            "choices": [
                                "public",
                                "private"
                            ],
                            "default": null,
                            "help_text": "Type of interface",
                            "readonly": false,
                            "required": true,
                            "type": "string"
                        },
                        "io": {
                            "default": null,
                            "fields": {
                                "bytes_recv": {
                                    "default": 0,
                                    "help_text": "Bytes received on this interface",
                                    "readonly": false,
                                    "required": false,
                                    "type": "integer"
                                },
                                "bytes_sent": {
                                    "default": 0,
                                    "help_text": "Packets received on this interface",
                                    "readonly": false,
                                    "required": false,
                                    "type": "integer"
                                },
                                "packets_recv": {
                                    "default": 0,
                                    "help_text": "Bytes sent from this interface",
                                    "readonly": false,
                                    "required": false,
                                    "type": "integer"
                                },
                                "packets_sent": {
                                    "default": 0,
                                    "help_text": "Packets sent from this interface",
                                    "readonly": false,
                                    "required": false,
                                    "type": "integer"
                                }
                            },
                            "help_text": "NIC runtime Input and Output data",
                            "readonly": false,
                            "required": false,
                            "type": "related"
                        },
                        "ip_v4": {
                            "default": null,
                            "help_text": "Public IPv4 configuration",
                            "readonly": false,
                            "required": false,
                            "type": "related"
                        },
                        "ip_v6": {
                            "default": null,
                            "help_text": "Public IPv6 configuration",
                            "readonly": false,
                            "required": false,
                            "type": "string"
                        },
                        "mac": {
                            "default": null,
                            "help_text": "MAC address of this NIC",
                            "readonly": false,
                            "required": false,
                            "type": "string"
                        }
                    },
                    "help_text": "The list of this server's NICs runtime",
                    "readonly": false,
                    "required": true,
                    "type": "related"
                }
            },
            "help_text": "Runtime information of the guest",
            "readonly": true,
            "required": false,
            "type": "related"
        },
        "smp": {
            "default": null,
            "help_text": "Symmetric Multiprocessing (SMP) i.e. number of CPU cores",
            "readonly": false,
            "required": false,
            "type": "integer"
        },
        "status": {
            "default": "No default provided.",
            "help_text": "Status of the guest.",
            "readonly": true,
            "required": false,
            "type": "string"
        },
        "tags": {
            "default": [],
            "help_text": "List of tags this server is associated with",
            "readonly": false,
            "required": false,
            "type": "related"
        },
        "uuid": {
            "default": null,
            "help_text": "UUID of server",
            "readonly": true,
            "required": true,
            "type": "string"
        },
        "vnc_password": {
            "default": null,
            "help_text": "VNC Password to connect to server",
            "readonly": false,
            "required": true,
            "type": "string"
        }
    }
}