name value type
id 77 int
created 1562760517 timestamp (unix time)
modified 1562760517 timestamp (unit time)
create_completed 1 boolean
pool 12800781820671582173 numeric(20)
root_dataset 12287180497637788286 numeric(20)
status 3 int
vdc 2 int
locked 0 boolean
name PostgreSQL 12.0 shard03 string(255)
description Cluster05 shard03 string
cpus 2 int (1-16)
ram 2147483648 bigint
cpu_priority 3 integer (1-20)
boot_media 1 integer
vcpu_class 1 integer
os_type 1 int
os_profile 6 int
guest секция guest кастомизация guest OS
pool_selector 2 селектор пула для создаваемой ВМ
disks [] disk[]
network_ports [] network_port[]

Свойство boot_media служит в качестве указателя на id образа, используемого в качестве recovery media. Словарь образов можно получить с помощью метода vm-boot_media-list. Установка данного свойства в значение 0 выключает использование recovery media.

Свойство pool_selector используется для выбора пула создаваемой ВМ.
Значения предопределённых «автоматических» селекторов:

  • 0 Пул с наименьшим количеством провизированного пространства
  • 1 Пул с наименьшим количеством провизированных vCPU
  • 2 Пул с наименьшим количеством провизированной RAM

По-умолчанию используется селектор 2.
Возможно явное указание идентификатора пула (guid) в качестве селектора. Такая возможность может быть полезной для размещения виртуальных машин горизонтально-масштабируемой системы «на каждом из пулов», что в штатном режиме тождественно подходу «на каждом из узлов» (при количестве пулов в кластере равном количеству узлов).

Disk

name value type
guid 13023737523627764036 numeric(20)
slot 1 int
size 25769803776 bigint
iops_limit 3500 int
mbps_limit 128 int
label Metadata disk 17 string(127)
sector_size {} sector_size

Sector_size

name value type
logical 512|4096 int
physical 512|4096 int

С помощью данных параметров можно привести характеристики диска к поведению, тождественному 512e (512/4096) или 4kn (4096/4096). Данные параметры можно указать только при создании диска, т.к. при изменении этих параметров у уже существующих дисков изменяется адресация (LBA), что приведёт к неработоспособности диска.

Размер самого диска должен быть кратен размеру и логического, и физического сектора.

Network_port

name value type
port_id 15692 int
mac ca:07:d1:70:ab:f2 MAC address
address 10.128.15.72 inet(4)
network_id 72 int
ip_guard 0 boolean
slot 1 int
ratelimit_mbits 2048 int

Свойство ip_guard определяет использование фильтрации трафика на порту по IP-адресу. По-умолчанию данное свойство включено. Выключение возможно только для портов в изолированных сетях.
Данная возможность может быть необходима для виртуальных машин с несколькими сетевыми портами, выполняющими функцию NAT/gateway или балансировщика.

Объекты disk и network_port имеют особый параметр slot, который определяет «очерёдность» объекта, видимую для гостевой ОС.

В качестве загрузочного диска используется диск, имеющий slot равный 1. Размер сектора для такого диска изменить нельзя.

7.7.1. vm-statuses()

Получение списка (словаря) статусов VM:

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-statuses",
        "id":           "dd4089d6-563a-11ea-9bec-920e9c0cd5ca"
}

Ответ:

{
   "id":	"dd4089d6-563a-11ea-9bec-920e9c0cd5ca"
   "jsonrpc":	"2.0",
   "result": {
      "code": 1,
      "data": {
         "1":	"Offline",
         "10":	"Created",
         "2":	"Starting",
         "3":	"Started",
         "4":	"Start failed",
         "5":	"Stopping",
         "6":	"Stop failed",
         "7":	"Creating",
         "8":	"Deleting",
         "9":	"Deleted"
      }
   }
}

7.7.2. vm-profiles()

Получение списка (словаря) profiles (ID для полей vm_os_type и vm_os_profile):

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-profiles",
        "id":           "a163d320-dad2-11e9-a9b9-6a1583008659"
}

Ответ:

{
   "id" : "a163d320-dad2-11e9-a9b9-6a1583008659",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "1" : {
            "name" : "FreeBSD",
            "profiles" : [
               {
                  "description" : "FreeBSD 12.0-RELEASE",
                  "id" : 14,
                  "min_size" : 4294967296,
                  "name" : "cloud-FreeBSD-x64-12.0"
               }
            ]
         },
         "6" : {
            "name" : "Linux",
            "profiles" : [
               {
                  "description" : "Debian 10.1 cloud image",
                  "id" : 15,
                  "min_size" : 4294967296,
                  "name" : "cloud-Debian-x64-10.1"
               },
               {
                  "description" : "CentOS 7.7 cloud image",
                  "id" : 4,
                  "min_size" : 4294967296,
                  "name" : "cloud-CentOS-7-x86_64"
               },
               {
                  "description" : "Ubuntu 18.04 cloud image",
                  "id" : 8,
                  "min_size" : 4294967296,
                  "name" : "cloud-ubuntuserver-amd64-18.04"
               }
            ]
         },
         "7" : {
            "name" : "Windows",
            "profiles" : [
               {
                  "description" : "Windows Server 2019 standard",
                  "id" : 12,
                  "min_size" : 17179869184,
                  "name" : "cloud-Windows-Server-2019-standart-x64"
               }
            ]
         }
      }
   }
}

7.7.3. vm-boot_media-list()

Получения словаря recovery media для свойства boot_media.

Запрос:

{
        "id":           "d0f6f026-de1a-11ea-bd0a-2ad555bcd16b",
        "jsonrpc":      "2.0",
        "method":       "vm-boot_media-list"
}

Ответ:

{
	"id":		"d0f6f026-de1a-11ea-bd0a-2ad555bcd16b",
	"jsonrpc":	"2.0",
	"result": {
		"code":	1,
		"data": {
			"0":	"none",
			"1":	"FreeBSD 12.1-RELEASE",
			"2":	"SystemRescueCD-amd64-6.1.7"
		}
	}
}

7.7.4. vm-list()

Получение списка VM; при отсутствии в запросе секции params->vdc будет возвращён список всех VM из всех vDC, доступных пользователю.В ответ включены два элемента, не являющиеся явными свойствами объекта VM: address и storage_provisioned; эти элементы носят вспомогательный характер для предовращения необходимости вызова метода vm-get для каждого экземпляра VM.При этом элемент address содержит IP-адрес NIC из первого слота.

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-list",
        "id":           "629e535a-652c-11eb-87c1-bb26bdf7560d",
        "params":       {
                "vdc":  10
        }
}

Ответ:

{
   "id" : "629e535a-652c-11eb-87c1-bb26bdf7560d",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : [
         {
            "address" : null,
            "admin_status" : 1,
            "cpu_count" : 2,
            "create_completed" : 1,
            "hw_version" : 4,
            "locked" : 0,
            "memory_count" : 4294967296,
            "os_profile" : 8,
            "os_type" : 6,
            "storage_provisioned" : 26843578368,
            "vdc_id" : 10,
            "vm_id" : 1925,
            "vm_name" : "k8s controller",
            "vm_status" : 1
         },
         {
            "address" : "10.78.28.53",
            "admin_status" : 3,
            "cpu_count" : 2,
            "create_completed" : 1,
            "hw_version" : 4,
            "locked" : 0,
            "memory_count" : 4294967296,
            "os_profile" : 7,
            "os_type" : 6,
            "storage_provisioned" : 21474836480,
            "vdc_id" : 10,
            "vm_id" : 2861,
            "vm_name" : "Services for test",
            "vm_status" : 3
         },
         {
            "address" : "10.78.28.144",
            "admin_status" : 3,
            "cpu_count" : 16,
            "create_completed" : 1,
            "hw_version" : 4,
            "locked" : 0,
            "memory_count" : 34359738368,
            "os_profile" : 1000,
            "os_type" : 1,
            "storage_provisioned" : 107374182400,
            "vdc_id" : 10,
            "vm_id" : 3288,
            "vm_name" : "FreeBSD clean env",
            "vm_status" : 3
         }
      ]
   }
}

При указании параметра objective возможно получение альтернативного варианта ответа:
Уровень 1: vm_id

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-list",
        "id":           "a50609ae-652c-11eb-980a-4b2dbdf7560d",
        "params":       {
                "vdc":  10,
                "objective":    "yo"
        }
}

Ответ:

{
   "id" : "a50609ae-652c-11eb-980a-4b2dbdf7560d",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "1925" : {
            "address" : null,
            "admin_status" : 1,
            "cpu_count" : 2,
            "create_completed" : 1,
            "hw_version" : 4,
            "locked" : 0,
            "memory_count" : 4294967296,
            "os_profile" : 8,
            "os_type" : 6,
            "storage_provisioned" : 26843578368,
            "vdc_id" : 10,
            "vm_id" : 1925,
            "vm_name" : "k8s controller",
            "vm_status" : 1
         },
         "2861" : {
            "address" : "10.78.28.53",
            "admin_status" : 3,
            "cpu_count" : 2,
            "create_completed" : 1,
            "hw_version" : 4,
            "locked" : 0,
            "memory_count" : 4294967296,
            "os_profile" : 7,
            "os_type" : 6,
            "storage_provisioned" : 21474836480,
            "vdc_id" : 10,
            "vm_id" : 2861,
            "vm_name" : "Services for test",
            "vm_status" : 3
         },
         "3288" : {
            "address" : "10.78.28.144",
            "admin_status" : 3,
            "cpu_count" : 16,
            "create_completed" : 1,
            "hw_version" : 4,
            "locked" : 0,
            "memory_count" : 34359738368,
            "os_profile" : 1000,
            "os_type" : 1,
            "storage_provisioned" : 107374182400,
            "vdc_id" : 10,
            "vm_id" : 3288,
            "vm_name" : "FreeBSD clean env",
            "vm_status" : 3
         }
      }
   }
}

7.7.5. vm-history()

Получение истории состояния VM.

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-history",
        "id":           "dd408aa8-563a-11ea-9bec-920e9c0cd5ca",
        "params":       {
                "vm_id":        45,
                "lines":        100
        }
}

Ответ:

{
   "id":	"dd408aa8-563a-11ea-9bec-920e9c0cd5ca",
   "jsonrpc":	"2.0",
   "result":	{
      "code":	1,
      "data": [
         {
            "progress":		100,
            "status":		3,
            "ts":		1561798294
         },
         {
            "progress":		1,
            "status":		2,
            "ts":		1561798287
         }
      ]
   }
}

7.7.6 vm-get()

Получение свойств VM

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-get",
        "id":           "f0ed9ada-652c-11eb-b2cd-dfd7bcf7560d",
        "params":       {
                "id":   3796
        }
}

Ответ:

{
   "id" : "f0ed9ada-652c-11eb-b2cd-dfd7bcf7560d",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "create_completed" : 1,
         "created" : 1612084387,
         "description" : "",
         "disks" : [
            {
               "guid" : "10279334309266006885",
               "iops_limit" : null,
               "mbps_limit" : null,
               "size" : 8589934592
            },
            {
               "guid" : "14015531421090136305",
               "iops_limit" : 0,
               "mbps_limit" : 0,
               "size" : 34359738368
            },
            {
               "guid" : "16144717296876123154",
               "iops_limit" : null,
               "mbps_limit" : null,
               "size" : 549755813888
            }
         ],
         "hw_version" : 4,
         "id" : 3796,
         "modified" : 1612128413,
         "network_ports" : [
            {
               "address" : "10.78.28.188",
               "mac" : "ca:07:82:21:59:fd",
               "network_id" : 1,
               "port_id" : 3572,
               "ratelimit_mbits" : null
            }
         ],
         "pool" : "6464944238762320705",
         "root_dataset" : "14929887334794663620",
         "status" : 1,
         "vdc" : 4,
         "vm_cpus" : 8,
         "vm_name" : "FreeBSD 13.0-ALPHA3 broadwell builder",
         "vm_os_profile" : 1027,
         "vm_os_type" : 1,
         "vm_ram" : 35433480192
      }
   }
}

7.7.7. vms-create()

Создание VM.

В данном примере создаётся VM с двумя дисками, второй из которых создаётся в виде 4kn. Создаются две NIc; IP-адреса назначаются автоматически с использованием функциональности IP-pool каждой из сетей.В секции кастомизации гостевой OS описано назначение пользователю root двух SSH-ключей, установка пароля; создание пользователя volobuev, назначение ему одного SSH-ключа, установка пароля; назначена конфигурация resolver; установлен hostname; назначена команда, выполняемая при каждой загрузке.

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vms-create",
        "id":           "de2ccf8c-764f-11ea-8c88-601744f6ef2b",
        "params": {
                "name":                 "Ubuntu docker/snap",
                "description":          null,
                "cpus":                 2,
                "ram":                  4294967296,
                "os_type":              6,
                "os_profile":           8,
                "vdc_id":               8,
                "disks" : [
                        {
                                "size":                 23622352896,
                                "slot":                 1
                        },
                        {
                                "sector_size": {
                                        "logical":      4096,
                                        "physical":     4096
                                },
                                "size":                 47244705792,
				"label":		"44GB 4Kn redo logs",
                                "slot":                 2
                        }
                ],
                "network_ports" : [
                        {
                                "network_id":           1,
                                "slot":                 1
                        },
                        {
                                "network_id":           4,
                                "slot":                 2
                        }
                ],
                "guest": {
                        "users": {
                                "root": {
                                        "ssh-authorized-keys": [
                                                "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEkIzoBL/vwQ1fbdhH8MGq/CPXA1QQtU2buiy03sVbn5 evgueni.gavrilov@vStack.com",
                                                "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJnT4MAS9coPy2nZhOiXXQeLcc4RoCaQJEBMbSp4ZAhs allan@vStack.com"
                                        ],
                                        "password": "$6$csNIFbubwcx.vLWM$ua7n12KtekpzPhYi8hSS5xSITPFAyOwGKylUam4owBbtZVO2uUH1t3d8PcZj3f.w6OsSgODbRy8mozhDSCBjV."
                                },
                                "volobuev": {
                                        "ssh-authorized-keys": [
                                                "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILBz8xQUuLBZzVqSph0RGVLIuqyYMOTLYp/y1e3jmV7F vol@nsa.gov"
                                        ],
                                        "password": "$6$csNIFbubwcx.vLWM$ua7n12KtekpzPhYi8hSS5xSITPFAyOwGKylUam4owBbtZVO2uUH1t3d8PcZj3f.w6OsSgODbRy8mozhDSCBjV."
                                }
                        },
			"ssh_password_auth":	1,
                        "resolver": {
                                "name_server": [
                                        "8.8.8.8",
                                        "8.8.4.4",
                                        "1.1.1.1"
                                ],
                                "search": "nsa.gov"
                        },
                        "boot_cmds": [
                                "swapoff -a"
                        ],
                        "run_cmds": [
                                "systemctl restart ntpd"
                        ],
                        "hostname":     "ubuntu-07-snap.docker.us.nsa.gov"
                }
        }
}

Ответ:

{
   "id" : "de2ccf8c-764f-11ea-8c88-601744f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "cpus" : 2,
         "create_completed" : 1,
         "created" : 1585989706,
         "description" : null,
         "disks" : [
            {
               "guid" : "18299855202392410869",
               "iops_limit" : null,
               "mbps_limit" : null,
               "sector_size" : {
                  "logical" : 512,
                  "physical" : 4096
               },
               "size" : 23622352896,
               "slot" : 1
            },
            {
               "guid" : "1075373250829122474",
               "iops_limit" : null,
	       "label": "44GB 4Kn redo logs",
               "mbps_limit" : null,
               "sector_size" : {
                  "logical" : 4096,
                  "physical" : 4096
               },
               "size" : 47244705792,
               "slot" : 2
            }
         ],
         "hw_version" : 4,
         "id" : 2088,
         "incarnation" : 15859897060,
         "modified" : 1585989706,
         "name" : "Ubuntu docker/snap",
         "network_ports" : [
            {
               "address" : "10.78.28.119",
               "mac" : "ca:07:49:25:ab:6c",
               "network_id" : 1,
               "port_id" : 1411,
               "ratelimit_mbits" : null,
               "slot" : 1
            },
            {
               "address" : "10.100.200.25",
               "mac" : "ca:07:c8:a3:c6:fa",
               "network_id" : 4,
               "port_id" : 1412,
               "ratelimit_mbits" : null,
               "slot" : 2
            }
         ],
         "os_profile" : 8,
         "os_type" : 6,
         "pool" : "1139178722141106475",
         "ram" : 4294967296,
         "root_dataset" : "14979019997914453111",
         "status" : 10,
         "vdc" : 8
      }
   }
}

7.7.8. vm-change-vdc()

Смена vDC VM (перенос VM из одного vDC в другой).

Использование данного метода возможно при следующих условиях:

Пользователь, выполняющий данную операцию, имеет роль vDC admin в обоих vDC

  1. Оба vDC имеют все сети, используемые в VM

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-change-vdc",
        "id":           "1ccca298-c822-11ea-b43f-e7f855bcd16b",
        "params": {
                "vm_id":                1141,
                "src_vdc":		15,
		"dst_vdc":		72
        }
}

Ответ:

{
   "id" : "1ccca298-c822-11ea-b43f-e7f855bcd16b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "message" : "Changed without errors"
      }
   }
}

7.7.9. vms-add-disk()

Добавление диска к VM

Параметр slot является опциональным; в случае его отсутствия будет использован первый свободный слот. После успешного выполнения запроса необходимо выполнить рестарт VM (не перезагрузку гостевой OS).

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "b797ae5e-839d-11ea-b900-6b3f44f6ef2b",
        "method":       "vms-add-disk",
        "params": {
                "vm_id":        2214,
                "size":         1073741824,
		"slot":		5,
		"label":	"4Kn 1GB redo for standby",
                "sector_size": {
                        "logical":      4096,
                        "physical":     4096
                }
        }
}

Ответ:

{
   "id" : "b797ae5e-839d-11ea-b900-6b3f44f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "guid" : "11143651807831677732",
         "sector_size" : {
            "logical" : 4096,
            "physical" : 4096
         },
         "size" : 1073741824,
	 "label": "4Kn 1GB redo for standby",
         "slot" : 5
      }
   }
}

7.7.10. vms-add-nic()

Добавление nic (сетевой карты) к VM

Параметр slot является опциональным; в случае его отсутствия будет использован первый свободный слот.
Добавление сетевого интерфейса возможно только у VM, находящейся в состоянии offline.

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "fc771022-839e-11ea-b5bc-477f44f6ef2b",
        "method":       "vms-add-nic",
        "params": {
                "id":           2251,
                "network_id":   7,
                "slot":         3
        }
}

Ответ:

{
	"jsonrpc":      "2.0",
	"id":           "fc771022-839e-11ea-b5bc-477f44f6ef2b",
	"result": {
		"code": 1,
		"data": {
			"address":	"10.70.10.6",
			"mac":		"ca:07:97:e0:92:c5",
			"network_id":	7,
			"port_id":	1697,
			"slot":		3
		}
	}
}

7.7.11. vms-disk-resize()

Увеличение размера диска

После успешного выполнения запроса необходимо выполнить рестарт VM (не перезагрузку гостевой OS).

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "c41b3a76-7e19-11ea-8239-053143f6ef2b",
        "method":       "vms-disk-resize",
        "params": {
                "id":           2214,
                "disk_guid":    5781408142104719029,
                "size":         4294967296
        }
}

Ответ:

{
   "id" : "c41b3a76-7e19-11ea-8239-053143f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1
   }
}

7.7.12. vm-disk-set-label()

Изменение метки диска

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-disk-set-label",
        "id":           "f4dcb9f0-3fa6-11eb-b6cb-a9662812b729",
        "params": {
                "vm_id":        3558,
                "guid":         12832987975931186134,
                "label":        "Arch logs for now"
        }
}

Ответ:

{
	"id":		"f4dcb9f0-3fa6-11eb-b6cb-a9662812b729",
	"jsonrpc":	"2.0",
	"result": {
		"code":	1
	}
}

7.7.13. vms-snapshot()

Создание снимка VM.

Снимок из себя представляет состояние VM (диски, конфигурация) на определённый момент.Возможен откат VM к снимку, при этом все последующие снимки удаляются. Размер снимка отражает объём изменений, произошедших в дисках VM с момента создания снимка. В имени снимка разрешены символы [A-Z,a-z,0-9,_].

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "c4afa444-7e56-11ea-94c3-2e7544f6ef2b",
        "method":       "vms-snapshot",
        "params": {
                "vm_id":                2200,
                "snapshot_name":        "20200414_1651"
        }
}

Ответ:

{
   "id" : "c4afa444-7e56-11ea-94c3-2e7544f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "guid" : "11129989502823419063",
         "name" : "20200414_1651",
         "time" : "1586872285"
      }
   }
}

7.7.14. vm-snapshot-list()

Получение списка снимков VM.

Снимок из себя представляет состояние VM (диски, конфигурация) на определённый момент.
Возможен откат VM к снимку, при этом все последующие снимки удаляются.
Размер снимка отражает объём изменений, произошедших в дисках VM с момента создания снимка.
В имени снимка разрешены символы [A-Z,a-z,0-9,_].

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "e21903c4-7e63-11ea-bcb5-76c343f6ef2b",
        "method":       "vm-snapshot-list",
        "params": {
                "vm_id":                2200
        }
}

Ответ:

{
   "id" : "e21903c4-7e63-11ea-bcb5-76c343f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : [
         {
            "creation_time" : 1586872285,
            "guid" : "11129989502823419063",
            "name" : "20200414_1651",
            "size" : 0
         },
         {
            "creation_time" : 1586856415,
            "guid" : "15105571301450284651",
            "name" : "20200414_1226",
            "size" : 22521384
         },
         {
            "creation_time" : 1586872190,
            "guid" : "17564511416473906207",
            "name" : "20200414_1649",
            "size" : 0
         },
         {
            "creation_time" : 1586859834,
            "guid" : "6457973076157998916",
            "name" : "20200414_1323",
            "size" : 4785630480
         }
      ]
   }
}

Запрос (objective):

{
        "jsonrpc":      "2.0",
        "id":           "e2190900-7e63-11ea-bcb5-76c343f6ef2b",
        "method":       "vm-snapshot-list",
        "params": {
                "vm_id":                2200,
                "objective":            100
        }
}

Ответ (objective):

{
   "id" : "e2190900-7e63-11ea-bcb5-76c343f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "11129989502823419063" : {
            "creation_time" : 1586872285,
            "guid" : "11129989502823419063",
            "name" : "20200414_1651",
            "size" : 0
         },
         "15105571301450284651" : {
            "creation_time" : 1586856415,
            "guid" : "15105571301450284651",
            "name" : "20200414_1226",
            "size" : 22521384
         },
         "17564511416473906207" : {
            "creation_time" : 1586872190,
            "guid" : "17564511416473906207",
            "name" : "20200414_1649",
            "size" : 0
         },
         "6457973076157998916" : {
            "creation_time" : 1586859834,
            "guid" : "6457973076157998916",
            "name" : "20200414_1323",
            "size" : 4785630480
         }
      }
   }
}

7.7.15. vms-rollback()

Откат VM к состоянию, имеющемуся на время snapshot.

Все snapshots, созданные после указанного snapshot, безусловно и безвозвратно удаляются.
Непосредственно snapshot, к которому выполняется процедура отката, остаётся.

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "de1be646-7f31-11ea-864f-a13f43f6ef2b",
        "method":       "vms-rollback",
        "params": {
                "vm_id":                2200,
                "snapshot_name":        "20200414_1323"
        }
}

Ответ:

{
   "id" : "de1be646-7f31-11ea-864f-a13f43f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "message" : "Welcome back to the future"
      }
   }
}

7.7.16. vm-remove-nic()

Удаление «сетевого интерфейса» (NIC) у VM.

Конфигурация NIC сохраняется в случае наличия у VM snapshot'ов для возможности возврата к snapshot с оригинальной конфигурацией NIC.
Аналогичным образом резервируется slot, в который назначен данный NIC.
Удаление сетевого интерфейса возможно только у VM, находящейся в состоянии offline.

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "08d9d1b6-8470-11ea-9b1a-9d6a44f6ef2b",
        "method":       "vm-remove-nic",
        "params": {
                "vm_id":        2251,
                "port_id":      1697
        }
}

Ответ:

{
   "id" : "08d9d1b6-8470-11ea-9b1a-9d6a44f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "message" : "NIC of port_id=1697 has been removed",
      }
   }
}

7.7.17. vms-snapshot-remove()

Удаление snapshot VM.

При наличии в snapshot конфигурации элементов, которые были удалены после создания snapshot, такие элементы безвозвратно удаляются.

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "ddcf336a-84b2-11ea-8ad8-e37744f6ef2b",
        "method":       "vms-snapshot-remove",
        "params": {
                "vm_id":                2251,
                "snapshot_name":        "20200421_1757"
        }
}

Ответ:

{
   "id" : "ddcf336a-84b2-11ea-8ad8-e37744f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "message" : "Snapshot has been removed"
      }
   }
}

7.7.18. vm-remove-disk()

Удаление диска VM.

При наличии snapshot VM, созданного до удаления диска, диск, его slot и конфигурация будут удержаны для возможности отката к этому snapshot.
При удалении такого snapshot будет удалён и диск. Непосредственно операция удаления диска возможна только у VM, находящейся в состоянии offline.

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "76f8b1b8-8640-11ea-a8ae-b89e43f6ef2b",
        "method":       "vm-remove-disk",
        "params": {
                "vm_id":        2297,
                "disk_guid":    "18159859341532866844"
        }
}

Ответ:

{
   "id" : "76f8b1b8-8640-11ea-a8ae-b89e43f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "message" : "disk 18159859341532866844 has been removed"
      }
   }
}

7.7.19. vm-ratelimit-disk()

Установка ограничений производительности диска VM.

Данная возможность может быть полезной для исключения негативного влияния одной VM, потребляющей большое количество ресурса IO.
Возможна установка как лимита пропускной способности (mbps_limit) совместно с лимитом IOps (iops_limit), так и по-раздельности.
Для снятия лимита необходимо отправить значение необходимого параметра равное нулю (0).
Изменение данного параметра на работающей VM применяется сразу.

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-ratelimit-disk",
        "id":           "fd086efc-8df1-11ea-9fdf-daa043f6ef2b",
        "params": {
                "vm_id":                1141,
                "disk_guid":            5793432017665474692,
                "mbps_limit":   	256,
                "iops_limit":   	200
        }
}

Ответ:

{
   "id" : "fd086efc-8df1-11ea-9fdf-daa043f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "message" : "Ratelimit has been set"
      }
   }
}

7.7.20. vm-ratelimit-nic()

Установка ограничений производительности NIC VM.

Данная возможность может быть полезной для исключения негативного влияния одной VM, потребляющей большое количество сетевых ресурсов.
Для снятия лимита необходимо отправить значение параметра ratelimit_mbits равное нулю (0).
Изменение данного параметра на работающей VM применяется сразу.

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-ratelimit-nic",
        "id":           "fd086fec-8df1-11ea-9fdf-daa043f6ef2b",
        "params": {
                "vm_id":                1141,
                "port_id":              1125,
                "ratelimit_mbits":      33
        }
}

Ответ:

{
   "id" : "fd086fec-8df1-11ea-9fdf-daa043f6ef2b",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "message" : "Ratelimit has been set"
      }
   }
}

7.7.21. vms-cpu-priority()

Установка приоритета vCPU для VM.

Данная возможность может быть полезной для исключения негативного влияния VM, потребляющих большое количество vCPU ресурсов.
Меньшее значение (1) соответствует максимально возможному приоритету: VM получит больше vCPU ресурсов.
Большее значение (20) соответствует минимально возможному приоритету: VM получит меньше vCPU ресурсов.
Изменение данного параметра на работающей VM применяется сразу.

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "9d7e8454-a335-11ea-b5f5-1f4c8c0e90c8",
        "method":       "vms-cpu-priority",
        "params": {
                "vm_id":        2402,
                "cpu_priority": 7
        }
}

Ответ:

{
   "id" : "9d7e8454-a335-11ea-b5f5-1f4c8c0e90c8",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1
   }
}

7.7.22. vms-vcpu-class()

Установка класса vcpu виртуальной машины.

Класс определяет методику выделения квантов vCPU в условиях overcommit.

Класс Описание
0 выделение квантов vCPU без ограничений
1 конфигурация выделения квантов изменяется динамически исходя из утилизации физических CPU хоста
2 класс с фиксированной конфигурацией для VM с чрезмерным использованием vCPU
3 пользовательский класс 3
4 пользовательский класс 4
5 пользовательский класс 5

По-умолчанию VM имеет класс 1.

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "92560366-7ea0-11ec-8338-4bc064c0ce9b",
        "method":       "vms-vcpu-class",
        "params": {
                "vm_id":        5932,
                "vcpu_class":   3
        }
}

Ответ:

{
	"id":		"92560366-7ea0-11ec-8338-4bc064c0ce9b",
	"jsonrpc":	"2.0",
	"result": {
		"code":	1
		"data": {}
	}
}

7.7.23. vms-start(), vms-stop(), vms-restart()

Старт, стоп, рестарт VM с указанным ID.

Для методов vms-stop и vms-restart опционально могут быть использованы следующие параметры:

  • noacpi: при установке в 1 происходит выключение/рестарт VM без использования ACPI
  • hard_timeout: при использовании ACPI ждать N секунд выключения VM средствами гостевой OS, после чего выключить машину безусловно

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vms-stop",
        "id":           "c0a6127e-563e-11ea-8e17-1fac9c0cd5ca",
        "params":       {
                "id":           31
        }
}

Ответ:

{
	"id":		"c0a6127e-563e-11ea-8e17-1fac9c0cd5ca",
	"jsonrpc":	"2.0",
	"result" : {
		"code" : 1,
		"data" : {
		}
	}
}

7.7.24. vm-set()

Установка свойств VM.

Необязательно использовать все свойства; возможно изменение только необходимых.

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-set",
        "id":           "b063e954-b12f-11e9-8b23-18091bc8006e",
        "params":       {
                "id":   32,
                "vm_params":    {
			"cpus":		4,
			"ram":		2147483648,
                        "name":		"CPU test 32",
                        "description":	"CPU tricks (всяккая шляпа, например)"
                }
        }
}

Ответ:

{
        "jsonrpc":      "2.0",
        "id":           "b063e954-b12f-11e9-8b23-18091bc8006e",
	"result": {
		"code":		1
	}
}

7.7.25. vm-console()

Запрос wss до консоли VM.

При наличии существующего подключения оно прерывается.
В качестве параметра передаётся VM ID. Опциональный параметр type может использоваться для указания типа консоли (по-умолчанию данный параметр имеет значение == 1; значение == 2 указывает на необходимости получения WSS до текстовой консоли).

Запрос:

{
	"jsonrpc":      "2.0",
	"id":           "a845e8e2-ab54-11ea-b5b5-1d5a8c0e90c8",
	"method":       "vm-console",
	"params":       {
		"id":   41
	}
}

Ответ:

{
	"id":		"a845e8e2-ab54-11ea-b5b5-1d5a8c0e90c8",
	"jsonrpc":	"2.0",
	"result": {
		"code":	1,
		"data": {
			"id":	41,
			"wss":	"wss://mgmtvm.z.vstack.com/.wss/wss96078107_40434067_44716324"
		}
	}
}

7.7.26. vm-perfdata()

Запрос performance data. Возможные метрики (параметр metric):

  • cpu
  • disk
  • net
  • ram
  • all (всё вышеперечисленное)

Возможно указание отрезка времени в виде интервала от текущего момента, либо с явным указанием начала и конца отрезка времени.

Запрос (интервал):

{
        "jsonrpc":      "2.0",
        "method":       "vm-perfdata",
        "id":           "79af636a-ea6a-11e9-b548-9796663b5a12",
        "params":       {
                "metric":       "cpu",
                "vm_id":        389,
                "interval":     "3m",
                "slice":        "1m"
        }
}

Запрос (явное указание начала и конца):

{
	"jsonrpc":	"2.0",
	"method":	"vm-perfdata",
	"id":		"c202de98-6989-11ed-a676-9482afb91e77",
	"params":	{
		"metric":	"all",
		"vm_id":	1764,
		"begin_time":	1669024800,
		"end_time":	1669025400,
		"slice":	"1m"
	}
}

Ответ:

{
	"id": "c202de98-6989-11ed-a676-9482afb91e77",
	"jsonrpc": "2.0",
	"result": {
		"code": 1,
		"data": {
			"results": [
				{
					"series": [
						{
							"columns": [
								"time",
								"cpu",
								"vm_cpus"
							],
							"name": "bhyve_cpu",
							"values": [
								[
									1669024800,
									1,
									2
								],
								[
									1669024860,
									1,
									2
								],
								[
									1669024920,
									1,
									2
								],
								[
									1669024980,
									3.83333333333333,
									2
								],
								[
									1669025040,
									43,
									2
								],
								[
									1669025100,
									15.5,
									2
								],
								[
									1669025160,
									1,
									2
								],
								[
									1669025220,
									1,
									2
								],
								[
									1669025280,
									1,
									2
								],
								[
									1669025340,
									1,
									2
								]
							]
						}
					],
					"statement_id": 0
				},
				{
					"series": [
						{
							"columns": [
								"time",
								"read_bytes",
								"write_bytes",
								"read_iops",
								"write_iops"
							],
							"name": "virtio_blk",
							"tags": {
								"slot": "1"
							},
							"values": [
								[
									1669024800,
									0,
									0,
									0,
									0
								],
								[
									1669024860,
									0,
									0,
									0,
									0
								],
								[
									1669024920,
									0,
									0,
									0,
									0
								],
								[
									1669024980,
									232163.555555556,
									5176.88888888856,
									2.3,
									0.277777777777768
								],
								[
									1669025100,
									1479479.46666667,
									2060340.62222222,
									28.4055555555556,
									58.35
								],
								[
									1669025160,
									0,
									397266.488888889,
									0,
									1.49444444444445
								],
								[
									1669025220,
									0,
									0,
									0,
									0
								],
								[
									1669025280,
									0,
									0,
									0,
									0
								],
								[
									1669025340,
									0,
									216.177777777612,
									0,
									0.0416666666666667
								]
							]
						},
						{
							"columns": [
								"time",
								"read_bytes",
								"write_bytes",
								"read_iops",
								"write_iops"
							],
							"name": "virtio_blk",
							"tags": {
								"slot": "2"
							},
							"values": [
								[
									1669024800,
									0,
									0,
									0,
									0
								],
								[
									1669024860,
									0,
									0,
									0,
									0
								],
								[
									1669024920,
									0,
									0,
									0,
									0
								],
								[
									1669024980,
									0,
									0,
									0,
									0
								],
								[
									1669025040,
									null,
									0,
									null,
									0
								],
								[
									1669025100,
									9011.2,
									0,
									0.425,
									0
								],
								[
									1669025160,
									0,
									0,
									0,
									0
								],
								[
									1669025220,
									0,
									0,
									0,
									0
								],
								[
									1669025280,
									0,
									0,
									0,
									0
								],
								[
									1669025340,
									0,
									0,
									0,
									0
								]
							]
						}
					],
					"statement_id": 1
				},
				{
					"series": [
						{
							"columns": [
								"time",
								"rx_bytes",
								"tx_bytes",
								"rx_pps",
								"tx_pps"
							],
							"name": "virtio_net",
							"tags": {
								"slot": "1"
							},
							"values": [
								[
									1669024800,
									17.6666666666667,
									14.6666666666667,
									0.222222222222626,
									0.222222222222172
								],
								[
									1669024860,
									10,
									0,
									0.138888888889293,
									0
								],
								[
									1669024920,
									45.3333333333333,
									23.3333333333333,
									0.583333333333333,
									0.333333333333333
								],
								[
									1669024980,
									18157.8611111111,
									992.527777777781,
									16.3611111111107,
									6.86111111111116
								],
								[
									1669025040,
									386863.916666667,
									null,
									null,
									null
								],
								[
									1669025100,
									4601257.88888889,
									22487.9722222222,
									2070.91666666667,
									148
								],
								[
									1669025160,
									209.5,
									143.5,
									2.08333333333333,
									1.91666666666667
								],
								[
									1669025220,
									223.166666666667,
									141.666666666667,
									2.25,
									1.83333333333333
								],
								[
									1669025280,
									218.666666666667,
									142.166666666667,
									2.22222222222202,
									1.91666666666667
								],
								[
									1669025340,
									220,
									153.5,
									2.19444444444465,
									2.02777777777775
								]
							]
						}
					],
					"statement_id": 2
				},
				{
					"series": [
						{
							"columns": [
								"time",
								"guest_mem",
								"VM_mem",
								"hv_mem"
							],
							"name": "bhyve_cpu",
							"values": [
								[
									1669024800,
									220057600,
									4382359552,
									541466624
								],
								[
									1669024860,
									220057600,
									4382359552,
									541466624
								],
								[
									1669024920,
									220057600,
									4382359552,
									541466624
								],
								[
									1669024980,
									234446848,
									4382359552,
									571880106.666667
								],
								[
									1669025040,
									351754922.666667,
									4381638656,
									848883712
								],
								[
									1669025100,
									550424576,
									4382359552,
									903999488
								],
								[
									1669025160,
									573599744,
									4382359552,
									903999488
								],
								[
									1669025220,
									573599744,
									4382359552,
									903999488
								],
								[
									1669025280,
									573599744,
									4382359552,
									903999488
								],
								[
									1669025340,
									573599744,
									4382359552,
									903999488
								]
							]
						}
					],
					"statement_id": 3
				}
			]
		}
	}
}

7.7.27. vm-billing()

Запрос billing (сеть)

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-billing",
        "id":           "858b11a8-ccc3-11e9-a588-e4d15929abe7",
        "params":       {
                "vm_id":        205,
                "begin_time":   1567342800,
                "end_time":     1567347642
        }
}

Ответ:

{
   "id" : "858b11a8-ccc3-11e9-a588-e4d15929abe7",
   "jsonrpc" : "2.0",
   "result" : {
      "code" : 1,
      "data" : {
         "results" : [
            {
               "series" : [
                  {
                     "columns" : [
                        "time",
                        "rx_bytes",
                        "tx_bytes"
                     ],
                     "name" : "virtio_net",
                     "values" : [
                        [
                           "1970-01-01T00:00:00Z",
                           2328943108,
                           78679228
                        ]
                     ]
                  }
               ],
               "statement_id" : 0
            }
         ]
      }
   }
}

7.7.28. vms-remove()

Удаление VM.

Запрос:

{
	"jsonrpc":      "2.0",
	"method":       "vms-remove",
	"id":           "c0a6172e-563e-11ea-8e17-1fac9c0cd5ca",
	"params":       {
		"id":           46,
		"vdc_id":       2
	}
}

Ответ:

{
	"id":		"c0a6172e-563e-11ea-8e17-1fac9c0cd5ca",
	"jsonrpc":	"2.0",
	"result": {
		"code":		1,
		"data": {
			"Message": "..."
		}
	}
}

7.7.29. vms-suspend()

Приостановка работы VM.

Запрос:

{
        "id":           "2ba6396c-f2f7-11ec-894e-34bbd613a730",
        "jsonrpc":      "2.0",
        "method":       "vms-suspend",
        "params": {
                "vm_id":        1423
        }
}

Ответ:

{
        "id":		"2ba6396c-f2f7-11ec-894e-34bbd613a730",
        "jsonrpc":	"2.0",
        "result" : {
                "code":	1,
                "data":	{}
        }
}

7.7.30. vms-resume()

Возобновление работы VM, которая была ранее приостановлена с помощью vms-suspend.

Запрос:

{
        "id":           "23218486-f2f7-11ec-ad2f-6cb9d613a730",
        "jsonrpc":      "2.0",
        "method":       "vms-resume",
        "params": {
                "vm_id":        1423
        }
}

Ответ:

{
        "id":		"23218486-f2f7-11ec-ad2f-6cb9d613a730",
        "jsonrpc":	"2.0",
        "result":	{
                "code":	1,
                "data":	{}
        }
}

7.7.31. vms-balloon()

Сдувание RAM гостевой OS виртуальной машины. Доступна при ненулевом значении кластерной опции feature.balloon.

Запрос:

{
        "jsonrpc":      "2.0",
        "id":           "1c809bb6-4302-11ed-a338-f8ffafb91e77",
        "method":       "vms-balloon",
        "params":       {
                "vm_id":        1694,
                "bytes":        4096
        }
}

Ответ:

{
        "id":		"1c809bb6-4302-11ed-a338-f8ffafb91e77",
        "jsonrpc":	"2.0",
        "result":	{
                "code":	1,
                "data":	{}
        }
}