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
- Оба 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": {} } }