Добро пожаловать!¶
Данная документация описывает использование библиотеки rustack-esu, выполняющей роль высокоуровневой абстракции к REST API облака гиперконвергентного решения РУСТЭК-ЕСУ. Описание методов API можно найти в отдельной документации.
Установка¶
$ pip install rustack-esu
Начало работы¶
Для взаимодействия с облаком через библиотеку потребуется заранее получить токен доступа. Это можно сделать в панели управления или вызвав соответствующий метод API.
Данный токен необходимо передавать как параметр token в конструкторы объектов и в метод get_object. Если токен не будет передан, он будет взят из переменной окружения ESU_API_TOKEN.
Manager¶
Позволяет получить списки всех объектов, доступных текущему пользователю.
- class esu.Manager(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- get_all_clients()[исходный код]¶
Возвращает список объектов всех доступных пользователю клиентов. Если текущему пользователю был предоставлен доступ к еще одному клиенту, данный список будет содержать два элемента.
- Результат
Список объектов
esu.Client
- Тип результата
list
- get_all_projects()[исходный код]¶
Возвращает список объектов всех доступных пользователю проектов. Если текущий пользователь имеет несколько проектов или ему предоставили доступ к стороннему проекту, данный список будет содержать их все.
- Результат
Список объектов
esu.Project
- Тип результата
list
- get_all_vdcs()[исходный код]¶
Возвращает список объектов всех доступных пользователю ВЦОДов. Если текущий пользователь имеет несколько ВЦОДов или ему был предоставлен доступ к сотронним проектам, данный список будет содержать их все.
- Результат
Список объектов
esu.Vdc
- Тип результата
list
- get_all_vms()[исходный код]¶
Возвращает список объектов всех доступных пользователю виртуальных выделенных серверов. Если текущий пользователь имеет несколько виртуальных серверов или ему был предоставлен доступ к сторонним проектам, данный список будет содержать их все.
- Результат
Список объектов
esu.Vm
- Тип результата
list
Client¶
Клиент создается при регистрации пользователя. Пользователям доступен как минимум один клиент или больше в случае, когда пользователю был предоставлен доступ к другому клиенту.
Объект «клиент»¶
- class esu.Client(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор
name (str) – Имя
payment_model (str) – Модель взаиморасчетов. prepay или postpay
balance (float) – Баланс
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
Предупреждение
Объект доступен только для чтения и не может быть создан, изменен или удален.
- classmethod get_object(id, token=None)[исходный код]¶
Получить объект клиента по его ID
- Параметры
id (str) – Идентификатор клиента
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект клиента
esu.Client
- Тип результата
object
- get_projects()[исходный код]¶
Получить проекты данного клиента.
- Результат
Список объектов
esu.Project
- Тип результата
list
Примеры использования¶
Получить спиок проектов на определенном клиенте:
from esu import Client
client = Client.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
for project in client.get_projects():
print(f'Проект "{project.name}"')
Project¶
Объект проекта. Проекты представляют из себя логические сущности, в которые объединены те или иные облачные услуги. Проекты могут создаваться клиентами, а после регистрации всегда существует проект по умолчанию.
Объект «проект»¶
- class esu.Project(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор
name (str) – Имя
client (object) – Объект класса
esu.Client
. Клиент, к которому относится проектtoken (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
Примечание
Поля
name
иclient
необходимы для создания.Поле
name
может быть изменено для существующего объекта.- classmethod get_object(id, token=None)[исходный код]¶
Получить объект проекта по его ID
- Параметры
id (str) – Идентификатор проекта
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект проекта
esu.Project
- Тип результата
object
- create()[исходный код]¶
Создать объект
- Исключение
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]¶
Сохранить изменения
- Исключение
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]¶
Удалить объект
- Исключение
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- get_vdcs()[исходный код]¶
Получить ВЦОДы в данном проекте. Вернет список объектов
esu.Vdc
.- Результат
Список объектов
esu.Vdc
- Тип результата
list
Примеры использования¶
Создать проект на определенном клиенте:
from esu import Client, Project
client = Client.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
project = Project(client=client, name='Новый проект')
project.create()
Переименовать первый проект на клиенте:
from esu import Client, Project
client = Client.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
project = client.get_projects()[0]
project.name = 'Новое имя проекта'
project.save()
Vdc¶
Объект виртуального центра обработки данных (ВЦОД). ВЦОДы включают в себя ИТ-инфраструктуру, вычислительные ресурсы и ресурсы для хранения информации.
При создании ВЦОД автоматически создаются сеть esu.Network
и
маршрутизатор esu.Router
, которые не могут быть удалены.
Поддерживается два типа гипервизора: VMware vSphere ESXi и OpenStack KVM.
Объект «ВЦОД»¶
- class esu.Vdc(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор ВЦОД
name (str) – Имя ВЦОД
hypervisor_type (str) – Тип гипервизора. vmware или kvm
project (object) – Объект класса
esu.Project
. Проект, к которому относится данный ВЦОДtoken (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
Примечание
Поля
name
,hypervisor_type
иproject
необходимы для создания.Поле
name
может быть изменено для существующего объекта.- classmethod get_object(id, token=None)[исходный код]¶
Получить объект ВЦОД по его ID
- Параметры
id (str) – Идентификатор ВЦОД
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект ВЦОД
esu.Vdc
- Тип результата
object
- create()[исходный код]¶
Создать объект
- Исключение
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]¶
Сохранить изменения
- Исключение
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]¶
Удалить объект
- Исключение
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- get_vms()[исходный код]¶
Получить список виртуальных машин, доступных в рамках данного ВЦОД.
- Результат
Список объектов
esu.Vm
- Тип результата
list
- get_templates()[исходный код]¶
Получить список шаблонов ОС для создания виртуальных машин, доступных в данном ВЦОДе.
- Результат
Список объектов
esu.Template
- Тип результата
list
- get_storage_profiles()[исходный код]¶
Получить список профилей хранения, которые используются при добавлении дисков, доступных в данном ВЦОДе.
- Результат
Список объектов
esu.StorageProfile
- Тип результата
list
- get_firewall_templates()[исходный код]¶
Получить список шаблонов брандмауэра, доступных в данном ВЦОДе.
- Результат
Список объектов
esu.FirewallTemplate
- Тип результата
list
- get_networks()[исходный код]¶
Получить список сетей, которые существуют в рамках данного ВЦОД.
- Результат
Список объектов
esu.Network
- Тип результата
list
- get_routers()[исходный код]¶
Получить список маршрутизаторов, которые доступны в рамках данного ВЦОД.
- Результат
Список объектов
esu.Router
- Тип результата
list
- get_ports()[исходный код]¶
Получить список подключений, которые существуют в данном ВЦОДе.
- Результат
Список объектов
esu.Port
- Тип результата
list
- get_disks()[исходный код]¶
Получить список дисков, которые существуют в данном ВЦОДе.
- Результат
Список объектов
esu.Disk
- Тип результата
list
- create_vm(name, template, password)[исходный код]¶
Быстрый способ создать виртуальный сервер в сети по-умолчанию и с настройками по-умолчанию.
- Параметры
name (str) – Название нового виртуального сервера
template (str) – Название шаблона системы
password (str) – Пароль, который будет установлен на сервер
Примеры использования¶
Создание нового ВЦОД VMware в первом доступном пользователю проекте:
from esu import Manager, Vdc
project = Manager().get_all_projects()[0]
vdc = Vdc(name='Новый ВЦОД', hypervisor_type='vmware', project=project)
vdc.create()
Вывести на экран список доступных в определенном ВЦОДе шаблонов операционных систем:
from esu import Manager, Vdc
project = Manager().get_all_projects()[0]
vdc = Vdc.get_object('e5d9a192-c5da-485a-b134-1b14ec9c57d9')
for template in vdc.get_templates():
print(template.name)
Vm¶
Виртуальный (выделенный) сервер эмулирует работу отдельного физического сервера. Сервер может быть создан с операционной системой семейства Linux или Windows, может иметь несколько сетевых подключений и дисков.
Объект «виртуальный сервер»¶
- class esu.Vm(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор
name (str) – Имя
description (str) – Описание. Любой произвольный пользовательский текст
cpu (int) – Количество ядер
ram (int) – Количество ОЗУ в ГБ
power (bool) – Текущее состояние питания. Включен или выключен
vdc (object) – Объект класса
esu.Vdc
. ВЦОД, к которому относится данный виртуальный серверtemplate (object) – Объект класса
esu.Template
. Шаблон операционной системыmetadata (list) – Список объектов класса
esu.VmMetadata
. Список полей, необходимых для создания виртуального выделенного сервера. Например, пароль или имя пользователя.ports (list) – Список объектов класса
esu.Port
. Список сетей, к которым подключен данный виртуальный серверdisks (list) – Список объектов класса
esu.Disk
. Список дисков, подключенных к данному виртуальному серверуfloating (object) – Объект класса
esu.Port
. Порт подключения виртаульаного выделенного сервера к внешней сети. Если None, сервер не имеет подключения к внешней сети.token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
Примечание
Поля
name
,cpu
,ram
,template
,ports
,disks
иvdc
необходимы для создания.Поля
metadata
,description
иfloating
опциональны при создании.Поля
name
,description
,cpu
,ram
,floating
могут быть изменены для существующего объекта.- classmethod get_object(id, token=None)[исходный код]¶
Получить объект виртуального сервера по его ID
- Параметры
id (str) – Идентификатор виртуального сервера
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект виртуального сервера
esu.Vm
- Тип результата
object
- create()[исходный код]¶
Создать объект
- Исключение
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]¶
Сохранить изменения
- destroy()[исходный код]¶
Удалить объект
- Исключение
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- power_on()[исходный код]¶
Включить виртуальный сервер
- power_off()[исходный код]¶
Выключить виртуальный сервер
- reboot()[исходный код]¶
Перезагрузить виртуальный сервер
- add_disk(disk)[исходный код]¶
Создать и присоединить к виртуальному серверу новый диск
- Параметры
disk (object) – Объект диска
esu.Disk
- attach_disk(disk)[исходный код]¶
Присоединить существующий во ВЦОДе диск к виртуальному серверу
- Параметры
disk (object) – Объект диска
esu.Disk
- detach_disk(disk)[исходный код]¶
Отсоединить диск от виртуального сервера
- Параметры
disk (object) – Объект диска
esu.Disk
- add_port(port)[исходный код]¶
Добавить подключение
- Параметры
port (object) – Новый объект
esu.Port
- remove_port(port)[исходный код]¶
Удалить подключение
- Параметры
port (object) – Существующий объект
esu.Port
- get_vnc_url()[исходный код]¶
Получить ссылку на VNC для открытия консоли управления сервером
- Результат
Адрес VNC консоли
- Тип результата
str
Примеры использования¶
Создать виртуальный сервер на базе ОС 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()
Template¶
Шаблон (операционной) системы. Используется при создании вируальных серверов.
Для получения всех доступных во ВЦОДе шаблонов используется метод
esu.Vdc.get_templates()
.
Объект «шаблон системы»¶
- class esu.Template(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор шаблона
name (str) – Имя шаблона
min_cpu (int) – Минимальное количество ядер, необходимое для развертывания этого шаблона
min_ram (int) – Минимальное количество RAM, необходимое для развертывания этого шаблона
min_hdd (int) – Минимальный размер первого диска, необходимого для развертывания этого шаблона
Предупреждение
Объект доступен только для чтения и не может быть создан, изменен или удален.
- classmethod get_object(id, token=None)[исходный код]¶
Получить объект шаблона по его ID
- Параметры
id (str) – Идентификатор шаблона
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект шаблона
esu.Template
- Тип результата
object
- get_fields()[исходный код]¶
Получить список полей шаблона ОС.
- Результат
Список объектов
esu.TemplateField
- Тип результата
list
TemplateField¶
Каждый шаблон системы esu.Template
содержит список полей шаблона. Он
может быть получен с помощью метода esu.Template.get_fields()
.
Поля специфичны для каждого из шаблонов и являются входными данными, необходимыми для его успешного развертывания в виртуальный сервер.
Объект «поле шаблона»¶
- class esu.TemplateField(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор поля шаблона
name (str) – Имя поля шаблона
default (str) – Значение по умолчанию
type (str) – Тип
required (boolean) – Обязательное
position (int) – Порядок
system_alias (str) – Системный идентификатор
Предупреждение
Объект доступен только для чтения и не может быть создан, изменен или удален.
VmMetadata¶
Объект используется при создании и редактировании виртуальных серверов
esu.Vm
Объект не может быть создан или удален как самостоятельная
сущность. Следует управлять списком объектов через свойство класса metadata
у объекта esu.Vm
.
Объект «поле метадаты»¶
- class esu.VmMetadata(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор
field (object) – Объект
esu.TemplateField
value (str) – Значение
Disk¶
Диск является сущностью для хранения информации. Диск нельзя создать отдельно
от виртуального сервера. Чтобы создать диск, следует использовать метод
esu.Vm.add_disk()
у уже существующего сервера.
В то же время, уже созданный диск может быть от него отключен и подключен позднее к другому виртуальному серверу или удален.
Можно изменять размер существующего диска в сторону увеличения.
Объект «диск»¶
- class esu.Disk(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор диска
name (str) – Имя диска
size (int) – Размер диска (ГБ)
scsi (str) – Порт, к которому подключен диск
vm (object) – Объект виртуального сервера
esu.Vm
storage_profile (object) – Объект
esu.StorageProfile
Примечание
Поля
name
,size
,storage_profile
могут быть изменены для существующего объекта.Предупреждение
storage_profile
можно изменить только для дисков в сегменте VMware когда диск подключен к виртуальному серверу.- classmethod get_object(id, token=None)[исходный код]¶
Получить объект диска по его ID
- Параметры
id (str) – Идентификатор диска
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект диска
esu.Disk
- Тип результата
object
- save()[исходный код]¶
Сохранить изменения
- Исключение
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]¶
Удалить объект
- Исключение
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
Примеры использования¶
Добавить диск типа SATA к уже существующему виртуальному серверу:
from esu import Vm, Disk
vm = Vm.get_object('954fd467-fd9a-4ce7-b4df-1e81e557bce9')
storage_profile = next(p for p in vm.vdc.get_storage_profiles() \
if p.name == 'SATA')
disk = Disk(name='Дополнительный диск', size=30,
storage_profile=storage_profile)
vm.add_disk(disk)
Увеличить диск виртуального сервера:
from esu import Vm
vm = Vm.get_object('954fd467-fd9a-4ce7-b4df-1e81e557bce9')
disk = vm.disks[0]
disk.size += 5
disk.save()
StorageProfile¶
Объект профиля хранения. Используется при создании дисков вируальных серверов.
Метод esu.Vdc.get_storage_profiles()
позволяет получить все профили
хранения, доступные в определенном ВЦОДе.
Объект «профиль хранения»¶
- class esu.StorageProfile(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор профиля хранения
name (str) – Имя профиля хранения
Предупреждение
Объект доступен только для чтения и не может быть создан, изменен или удален.
- classmethod get_object(id, token=None)[исходный код]¶
Получить объект профиля хранения по его ID
- Параметры
id (str) – Идентификатор профиля хранения
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект профиля хранения
esu.StorageProfile
- Тип результата
object
Network¶
Приватная сеть обеспечивает обмен данными между различными вычислительными
устройствами во ВЦОДе. К примеру, виртуальные машинамы и маршрутизаторы
соединяются сетью. Для правильного функционирования сети, необходимо создать
как минимум одну подсеть esu.Subnet
внутри.
При создании esu.Vdc
автоматически создается сеть по умолчанию,
которую нельзя удалить.
Объект «сеть»¶
- class esu.Network(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор сети
name (str) – Имя сети
vdc (object) – Объект класса
esu.Vdc
. ВЦОД, к которому относится сетьis_default (bool) – True для сети по умолчанию
subnets (object) – Список объектов класса
esu.Subnet
Примечание
Поля
name
иvdc
необходимы для создания.Поле
subnets
опционально при создании.Поле
name
может быть изменено для существующего объекта.- classmethod get_object(id, token=None)[исходный код]¶
Получить объект сети по его ID
- Параметры
id (str) – Идентификатор сети
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект сети
esu.Network
- Тип результата
object
- create()[исходный код]¶
Создать объект
- Исключение
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]¶
Сохранить изменения
- Исключение
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]¶
Удалить объект
- Исключение
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- add_subnet(subnet)[исходный код]¶
Добавить подсеть
- Параметры
subnet (object) – Объект подсети
esu.Subnet
- remove_subnet(subnet)[исходный код]¶
Удалить подсеть
- Параметры
subnet (object) – Объект подсети
esu.Subnet
Примеры использования¶
Переименование сети по-умолчанию:
from esu import Network, Subnet
vdc = Vdc.get_object('e5d9a192-c5da-485a-b134-1b14ec9c57d9')
network = next(n for n in vdc.get_networks() if n.is_default)
network.name = 'Главная сеть'
network.save()
Subnet¶
Подсеть позволяет задать диапазоны IP-адресов, доступные для использования устройствами, подключенными к определенной сети.
Подсеть не может быть создана или удалена как самостоятельная
сущность. Следует использовать методы esu.Network.add_subnet()
и
esu.Network.remove_subnet()
у уже существующей сети.
Объект «подсеть»¶
- class esu.Subnet(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор
cidr (str) – CIDR
gateway (str) – Адрес шлюза
start_ip (str) – Начальный адрес для DHCP
end_ip (str) – Конечный адрес для DHCP
enable_dhcp (bool) – Включить или выключить DHCP
Примеры использования¶
Создание сети с Subnet:
from esu import Network, Subnet
subnet = Subnet(cidr='10.22.23.0/24', gateway='10.22.23.1',
start_ip='10.22.23.2', end_ip='10.22.23.254',
enable_dhcp=True)
network = Network(vdc=vdc, name='Network 1', subnets=[subnet])
network.create()
Добавление Subnet к уже существующей сети:
from esu import Network, Subnet
network = Network.get_object('b9e6df93-0d04-4dac-a3c1-1a8539b8e445')
subnet = Subnet(cidr='10.22.23.0/24', gateway='10.22.23.1',
start_ip='10.22.23.2', end_ip='10.22.23.254',
enable_dhcp=True)
network.add_subnet(subnet)
Router¶
Маршрутизаторы управляют связностью приватных сетей с интернетом. Маршрутизатор может иметь собственный публичный адрес, тогда все виртуальные машины будут выходить в Интернет через этот IP-адрес, если на них не назначен собственный плавающий IP.
Объект «маршрутизатор»¶
- class esu.Router(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
Примечание
Поля
name
,ports
иvdc
необходимы для создания.Поле
floating
опционально при создании.Поля
name
иfloating
могут быть изменены для существующего объекта.- classmethod get_object(id, token=None)[исходный код]¶
Получить объект маршрутизатора по его ID
- Параметры
id (str) – Идентификатор маршрутизатора
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект маршрутизатора
esu.Router
- Тип результата
object
- create()[исходный код]¶
Создать объект
- Исключение
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]¶
Сохранить изменения
- Исключение
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]¶
Удалить объект
- Исключение
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- add_port(port)[исходный код]¶
Добавить подключение
- Параметры
port (object) – Новый объект
esu.Port
- remove_port(port)[исходный код]¶
Удалить подключение
- Параметры
port (object) – Существующий объект
esu.Port
Примеры использования¶
Создать новый маршрутизатор и подключить его к первой сети во ВЦОДе:
from esu import Vdc, Port, Router
vdc = Vdc.get_object('e5d9a192-c5da-485a-b134-1b14ec9c57d9')
network = vdc.get_networks()[0]
port = Port(network=network)
router = Router(vdc=vdc, name='Новый маршрутизатор', ports=[port])
router.create()
Подключить определенный маршрутизатор к существующей сети:
from esu import Router, Network, Port
router = Router.get_object('58385696-32c6-4a5c-bafe-895815eedf04')
network = Network.get_object('b9e6df93-0d04-4dac-a3c1-1a8539b8e445')
router.add_port(Port(network=network))
Port¶
Порт сетевого подключения во ВЦОДе. Используется при подключении
виртуальных серверов esu.Vm
и маршрутизаторов esu.Router
к
сети, а также для подключения публичных IP-адресов к ним.
Если порт используется для подключения виртуального сервера к сети ВЦОД,
доступно изменение списка активных шаблонов брандмауэра
esu.FirewallTemplate
.
Объект «порт»¶
- class esu.Port(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор порта
ip_address (str) – IP адрес
type (str) – Тип
fw_templates (list) – Включенные шаблоны брандмауэра
esu.FirewallTemplate
network (object) – Сеть
esu.Network
Примечание
Поле
network
необходимо для создания в качестве подключения к приватной сети ВЦОД.Поля
ip_address
иfw_templates
опцональны при создании подключения к приватной сети ВЦОДПоля
ip_address
иfw_templates
могут быть изменены для существующего объектаПри создании подключения плавающего IP обязательных полей нет
- classmethod get_object(id, token=None)[исходный код]¶
Получить объект порта по его ID
- Параметры
id (str) – Идентификатор порта
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект порта
esu.Port
- Тип результата
object
- save()[исходный код]¶
Сохранить изменения
- Исключение
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
FirewallTemplate¶
Шаблона брандмауэра. Метод esu.Vdc.get_firewall_templates()
позволяет получить все шаблоны брандмауэра, доступные в определенном ВЦОДе.
Объект «шаблон брандмауэра»¶
- class esu.FirewallTemplate(*args, token: Optional[str] = None, **kwargs)[исходный код]¶
- Параметры
id (str) – Идентификатор шаблона брандмауэра
name (str) – Имя шаблона брандмауэра
Предупреждение
Объект доступен только для чтения и не может быть создан, изменен или удален.
- classmethod get_object(id, token=None)[исходный код]¶
Получить объект шаблона брандмауэра по его ID
- Параметры
id (str) – Идентификатор шаблона брандмауэра
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат
Возвращает объект шаблона брандмауэра
esu.FirewallTemplate
- Тип результата
object