Skip to content

Latest commit

 

History

History
63 lines (42 loc) · 2.33 KB

vm.rst

File metadata and controls

63 lines (42 loc) · 2.33 KB

Vm

Виртуальный (выделенный) сервер эмулирует работу отдельного физического сервера. Сервер может быть создан с операционной системой семейства Linux или Windows, может иметь несколько сетевых подключений и дисков.

Объект "виртуальный сервер"

esu.Vm

Примеры использования

Создать виртуальный сервер на базе ОС Ubuntu 18:

from requests import HTTPError
from esu import Manager, VmMetadata, Port, Disk, Vm

vdc = Manager().get_all_vdcs()[0]  # Первый доступный пользователю ВЦОД
network = next(n for n in vdc.get_networks() if n.is_default)  # Сеть по умолчанию
template = next(v for v in vdc.get_templates() if 'Ubuntu 18' in v.name)  # Шаблон ОС
storage_profile = vdc.get_storage_profiles()[0]  # Первый доступный профиль хранения
firewall_template = next(f for f in vdc.get_firewall_templates() if f.name == 'По-умолчанию')  # Разрешить исходящие подключения
password = 'nw9fH4n$11'  # Пароль для виртуального сервера

metadata = []
for field in template.get_fields():
    value = field.default
    if field.system_alias == 'password':
        value = password
    metadata.append(VmMetadata(field=field, value=value))

port = Port(network=network, fw_templates=[firewall_template])
disk = Disk(name='Системный диск', size=15, storage_profile=storage_profile)

vm = Vm(name='Новый сервер', cpu=2, ram=2, vdc=vdc, template=template,
        metadata=metadata, ports=[port], disks=[disk])

try:
    vm.create()
except HTTPError as ex:
    api_answer = ex.response.json()
    print(f'Error has happend: {api_answer}')

Назначить случайный плавающий IP адрес на существующий виртуальный сервер:

from esu import Vm, Port

vm = Vm.get_object('954fd467-fd9a-4ce7-b4df-1e81e557bce9')
vm.floating = Port()
vm.save()