Добро пожаловать!
Данная документация описывает использование библиотеки 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
- get_all_storage_profiles()[исходный код]
Возвращает список объектов всех доступных пользователю профилей хранения.
- Результат:
Список объектов
esu.StorageProfile
- Тип результата:
list
- get_all_platforms()[исходный код]
Возвращает список объектов всех доступных пользователю платформ.
- Результат:
Список объектов
esu.Platform
- Тип результата:
list
- get_all_firewall_templates()[исходный код]
Возвращает список объектов всех доступных пользователю шаблонов брандмауэра.
- Результат:
Список объектов
esu.FirewallTemplate
- Тип результата:
list
- get_all_networks()[исходный код]
Возвращает список объектов всех доступных пользователю сетей.
- Результат:
Список объектов
esu.Network
- Тип результата:
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
- get_available_hypervisors()[исходный код]
Получить список доступных гипервизоров в этом проекте. Вернет список объектов
esu.Hypervisor
.- Результат:
Список объектов
esu.Hypervisor
- Тип результата:
list
- get_dns_zones()[исходный код]
Получить список доступных доменных зон в этом проекте. Вернет список объектов
esu.Dns
.- Результат:
Список объектов
esu.Dns
- Тип результата:
list
- get_k8s_clusters()[исходный код]
Получить список доступных кластеров Kubernetes в этом проекте. Вернет список объектов
esu.Kubernetes
.- Результат:
Список объектов
esu.Kubernetes
- Тип результата:
list
- get_s3_storages()[исходный код]
Получить список доступных s3 хранилищ в этом проекте. Вернет список объектов
esu.S3
.- Результат:
Список объектов
esu.S3
- Тип результата:
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()
Hypervisor
Объект гипервизора. Не имеет самостоятельных методов, используется только при
создании ВЦОДа. Может быть получен из метода
esu.Project.get_available_hypervisors()
Объект «гипервизор»
- class esu.Hypervisor(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор
name (str) – Имя
type (str) – Тип гипервизора. vmware или kvm
Примеры использования
См. пример здесь
Vdc
Объект виртуального центра обработки данных (ВЦОД). ВЦОДы включают в себя ИТ-инфраструктуру, вычислительные ресурсы и ресурсы для хранения информации.
При создании ВЦОД автоматически создаются сеть esu.Network
и
маршрутизатор esu.Router
, которые не могут быть удалены.
Поддерживается два типа гипервизора: VMware vSphere ESXi и OpenStack KVM.
Объект «ВЦОД»
- class esu.Vdc(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор ВЦОД
name (str) – Имя ВЦОД
hypervisor (object) – Объект класса
esu.Hypervisor
project (object) – Объект класса
esu.Project
. Проект, к которому относится данный ВЦОДtoken (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
Примечание
Поля
name
,hypervisor
и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) – Пароль, который будет установлен на сервер
- get_k8s_templates()[исходный код]
Получить список шаблонов k8s для создания кластеров, доступных в данном ВЦОДе.
- Результат:
Список объектов
esu.KubernetesTemplate
- Тип результата:
list
- get_images()[исходный код]
Получить список образов, доступных в данном ВЦОДе.
- Результат:
Список объектов
esu.Image
- Тип результата:
list
- get_backups()[исходный код]
Получить список задач резервного копирования, доступных в данном ВЦОДе.
- Результат:
Список объектов
esu.Backup
- Тип результата:
list
Примеры использования
Создание нового ВЦОД VMware в первом доступном пользователю проекте:
from esu import Manager, Vdc
project = Manager().get_all_projects()[0]
hypervisor = next(h for h in project.get_available_hypervisors() \
if h.type == 'vmware')
vdc = Vdc(name='Новый ВЦОД', hypervisor=hypervisor, 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 – Когда производится попытка удалить несуществующий объект
- 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
- power_on()[исходный код]
Включить виртуальный сервер
- power_off()[исходный код]
Выключить виртуальный сервер
- reboot()[исходный код]
Перезагрузить виртуальный сервер
- get_vnc_url()[исходный код]
Получить ссылку на VNC для открытия консоли управления сервером
- Результат:
Адрес VNC консоли
- Тип результата:
str
- revert(snapshot)[исходный код]
Восстановить сервер из снапшота
- Параметры:
snapshot (object) – объект снапшота
esu.Snapshot
- mount_iso(image)[исходный код]
Примонтировать iso к серверу как CD-ROM. После перезагрузки сервера он будет загружен с этого диска если он загрузочный
- Параметры:
image (object) – объект образа
esu.Image
- unmount_iso()[исходный код]
Отмонтировать iso от сервера После перезагрузки сервера он будет загружен с основного диска
Примеры использования
Создать виртуальный сервер на базе ОС 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) – Значение
Примеры использования
См. пример здесь
Kubernetes
Кластер Kubernetes. Kubernetes — открытое программное обеспечение для оркестрации контейнеризированных приложений — автоматизации их развёртывания, масштабирования и координации в условиях кластера. Кластер состоит из нескольких серверов - нод. Существует мастер-нода, главная управляющая нода кластера и обычные ноды, которые находятся под управлением мастер-ноды. Для создания кластера необходим создать или использовать созданный публичный ключ.
Объект «кластер kubernetes»
- class esu.Kubernetes(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор
name (str) – Имя
node_cpu (int) – CPU нод
node_ram (int) – RAM нод
node_disk_size (int) – Размер диска нод
node_storage_profile (object) – Объект
esu.StorageProfile
nodes_count (int) – Количество нод в кластере
vdc (object) – Объект класса
esu.Vdc
. ВЦОД, к которому относится данный кластерtemplate (str) – Идентификатор шаблона Kubernetes
user_public_key (string) – публичный SSH ключ
floating (object) – Объект класса
esu.Port
. Порт подключения кластера к внешней сети. Если None, кластер не имеет подключения к внешней сети.
- classmethod get_object(id, token=None)[исходный код]
Получить объект kubernetes по его ID
- Параметры:
id (str) – Идентификатор Kubernetes
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект кластера kubernetes
esu.Kubernetes
- Тип результата:
object
- create()[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект,
который уже существует –
- save()[исходный код]
Сохранить изменения
- destroy()[исходный код]
Удалить объект
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- get_dashbord_url()[исходный код]
Получить ссылку на Dashboard для открытия консоли k8s
- Результат:
Адрес дашборда
- Тип результата:
str
Примеры использования
Создать кластер kubernetes:
from esu import Vdc, Kubernetes, PublicKey
vdc = Vdc.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
key = PublicKey.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
storage_profile = vdc.get_storage_profiles()[0] # Первый доступный профиль хранения
k8s_template = next(v for v in vdc.get_k8s_templates() if 'Kubernetes 1.22.1' in v.name) # Шаблон кластера
cluster = Kubernetes(name="MyK8S", vdc=vdc, node_cpu=2, node_ram=2,
node_disk_size=10, node_storage_profile=storage_profile,
nodes_count=2, template=k8s_template, user_public_key=key)
KubernetesTemplate
Шаблон кластера Kubernetes - необходим для создания кластера Kubernetes.
Список шаблонов кластера Kubernetes доступных для созданного ВЦОД можно
получить используя метод esu.Vdc.get_k8s_templates()
Объект «шаблон кластера kubernetes»
- class esu.KubernetesTemplate(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор
name (str) – Имя
min_node_cpu (int) – Минимальное CPU нод
min_node_ram (int) – Минимальное RAM нод
min_node_hdd (int) – Минимальный размер диска нод
master_template_name (string) – Название шаблона мастер ноды
node_template_name (string) – Название шаблона ноды
vm_node_visible_template (object) – Объект
esu.Template
hypervisor_type (string) – Тип ресурсного пула (kvm, vmware)
- classmethod get_object(id, token=None)[исходный код]
Получить объект шаблона по его ID
- Параметры:
id (str) – Идентификатор шаблона
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект шаблона
esu.KubernetesTemplate
- Тип результата:
object
Примеры использования
Запросить список шаблонов кластера kubernetes во ВЦОД:
from esu import Vdc
vdc = Vdc.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
k8s_templates = vdc.get_k8s_templates()
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
- create()[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]
Сохранить изменения
- Исключение:
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- attach_disk(vm)[исходный код]
Присоединить существующий во ВЦОДе диск к виртуальному серверу
- detach_disk()[исходный код]
Отсоединить диск от виртуального сервера
- 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
Примеры использования
См. пример здесь
S3
Хранилище S3. Объектное хранилище используется для хранения файлов. Обладает высокой скоростью обработки запросов и данных. Хранилище создаётся в проекте
Объект «хранилище S3»
- class esu.S3(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор
name (str) – Имя
project (object) – Объект класса
esu.Project
. Проект, к которому относится данное хранилищеaccess_key (str) – Ключ доступа к хранилищу
secret_key (str) – Секретный ключ доступа к хранилищу
client_endpoint (str) – URL для подключения к хранилищу
- classmethod get_object(id, token=None)[исходный код]
Получить объект хранилища S3 по его ID
- Параметры:
id (str) – Идентификатор хранилища S3
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект хранилища S3
esu.S3
- Тип результата:
object
- create()[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]
Сохранить изменения
- destroy()[исходный код]
Удалить объект
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- renew_keys()[исходный код]
Сгенерировать новые ключи
Примеры использования
Создать объектное хранилище S3:
from esu import S3, Project
project = Project.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
s3 = S3(name="MyS3", project=project)
s3.create()
S3Bucket
Бакет хранилища S3. Файловая корзина - элемент S3 хранилища, который использует для хранения файлов и папок в хранилище S3.
Объект «бакет хранилища S3»
- class esu.S3Bucket(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор
name (str) – Имя бакета в ЕСУ
external_name (str) – Имя бакета в S3
- classmethod get_object(id, s3, token=None)[исходный код]
Получить объект бакета хранилища S3 по его ID
- Параметры:
id (str) – Идентификатор бакета хранилища S3
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект бакета хранилища S3
esu.S3bucket
- Тип результата:
object
- create(s3)[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save(s3)[исходный код]
Сохранить изменения
- destroy(s3)[исходный код]
Удалить объект
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
Примеры использования
Создать бакет объектного хранилища S3:
from esu import S3, S3bucket
s3 = S3.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
s3bucket = S3Bucket(name="MyS3bucket", s3=s3)
s3bucket.create()
Backup
Задача резервного копирования - создаётся для сервера или для нескольких серверов. Для создания задачи требуется указать расписание: дни и время выполнения задачи, а также серверы для которых она будет выполняться. В каждой задаче резервного копирования хранятся точки восстановления сервера. Из точек восстановления можно восстановить сервер в состояние сохранённое в точке.
Объект «задача резервного копирования»
- class esu.Backup(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор задачи резервного копирования
name (str) – Имя задачи резервного копирования
size (int) – Суммарный размер точек восстановления задачи резервного копирования (bytes)
vdc (object) – Объект ВЦОДа
esu.Vdc
retain_cycles (int) – Глубина хранения задачи резервного копирования
time (str) – Время выполнения задачи по расписанию в UTC
week_days (list) – Дни недели выполнения задачи по расписанию [1,2,3]
vms (list) – Список серверов для которых создана задача
Примечание
Поля
name
,vms
,retain_cycles
,week_days
,time
могут быть изменены для существующего объекта.- classmethod get_object(id, token=None)[исходный код]
Получить объект задачи резервного копирования по ее ID
- Параметры:
id (str) – Идентификатор задачи резервного копирования
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект диска
esu.Disk
- Тип результата:
object
- create()[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]
Сохранить изменения
- Исключение:
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- start_immediately()[исходный код]
Запустить выполнение задачи - создание точек восстановления
- get_restore_points()[исходный код]
Получить список точек восстановления в задаче резервного копирования.
- Результат:
Список объектов
esu.RestorePoint
- Тип результата:
list
- restore(restore_point, power_on=True, quick_restore=False)[исходный код]
Восстановить сервер из точки восстановления
- Параметры:
vm (object) –
esu.Vm
, сервер, который необходимо восстановитьrestore_point (object) –
esu.RestorePoint
, точка восстановления из которой необходимо восстановить серверpower_on (bool) – быть включен
quick_restore – (не рекомендуется)
- get_backup_log()[исходный код]
Получить лог создания точек восстановления из задачи
- Результат:
Отчёт создания точек восстановления
- Тип результата:
dict
- get_restore_log(vm)[исходный код]
Получить лог восстановления сервера из задачи
- Результат:
Отчёт восстановления сервера
- Тип результата:
dict
- destroy()[исходный код]
Удалить объект
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
Примеры использования
Создать задачу резервного копирования для сервера:
from esu import Vm, Backup, Vdc
vdc = Vdc.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
vm = Vm.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
backup = Backup(name="Test_Backup", vdc=vdc, vms=[vm], week_days=[1, 2],
time="09:00:00", retain_cycles=2)
Немедленно запустить выполнение задачи - создать точку восстановления:
import requests
from esu import Backup
backup = Backup.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
backup.start_immediately()
Восстановить сервер из точки восстановления:
from esu import Vm, Backup
backup = Backup.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
restore_point = backup.get_restore_points()[0] # Первая доступная точка восстановления
backup.restore(restore_point=restore_point)
Image
Образ - образ сервера или iso образ какой либо программы или ОС. Создать образ можно из уже созданного сервера, например для последующего создании копии этого сервера, путем создания сервера из образа. Также в сегменте VMware можно загрузить образ в систему, для последующего создания сервера из образа или для монтирования образа к серверу (iso)
Объект «образ»
- class esu.Image(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор
name (str) – Имя
files (list) – Список объектов класса
esu.File
. Список файлов вобразе –
size (str) – Размер образа
type (str) – Тип образа
vdc (object) – Объект класса
esu.Vdc
. ВЦОД, к которому относится образ
- classmethod get_object(id, token=None)[исходный код]
Получить объект образа по его ID
- Параметры:
id (str) – Идентификатор образа
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект образа
esu.Image
- Тип результата:
object
- create_from_vm(vm)[исходный код]
Создать образ из существующего сервера
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- create_for_upload()[исходный код]
Создать объект образа для последующей загрузки в него файлов
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- get_upload_link()[исходный код]
Получить ссылку для загрузки файлов образа
- commit_upload()[исходный код]
Подтвердить окончание загрузки файлов образа. Подтверждение необходимо после загрузки файлов образа по полученному url для загрузки файлов
- save()[исходный код]
Сохранить изменения
- destroy()[исходный код]
Удалить объект образа
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- get_download_link(file)[исходный код]
Получить ссылку для скачивания файла образа
- deploy_vm_from_image(vm)[исходный код]
Создать сервер из образа
- Параметры:
vm (object) –
- Результат:
объект созданного из образа сервера
esu.Vm
- Тип результата:
object
Примеры использования
Создать образ из созданного сервера:
from esu import Vm, Image, Vdc
vm = Vm.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
vdc = Vdc.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
image = Image(vdc=vdc, name='NewImage')
image.create_from_vm(vm=vm)
Загрузить образ:
import requests
from esu import Image, Vdc
vdc = Vdc.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
image = Image(vdc=vdc, name='NewImage')
image.create_for_upload() # Создание объекта образа для последующей загрузки файлов
url = image.get_upload_link() # Получение ссылки для загрузки файлов
headers = {
'Accept': '* / *',
'Accept-Encoding': 'gzip, deflate, br',
'Authorization': "bearer " + str(BaseAPI.token),
'Connection': 'keep-alive',
'Content-Type': 'application/octet-stream',
'Accept-Language': 'ru-ru'
}
file = {'file': open('test.iso', 'rb')}
up_response = requests.put(url=str(url), headers=headers, files=file) # Загрузка файла
image.commit_upload() # Подтверждение окончания загрузки файлов образа
Создание сервера из образа:
from esu import Image
image = Image.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
vm = image.deploy_vm_from_image()
Snapshot
Объект снапшота. Снапшот - слепок состояния системы, который можно использовать для последующего восстановления сервера в сохранённое в снапшоте состояние
Объект «снапшот»
- class esu.Snapshot(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор снапшота
name (str) – Имя снапшота
description (str) – описание для снапшота
vm (object) – Объект класса
esu.Vm
. Сервер, к которому относится данный снапшот
Примечание
Поле
name
иvm
необходимо для созданияПоля
description
опцональны при созданииПоля
name
иdescription
могут быть изменены для существующего объекта- classmethod get_object(id, token=None)[исходный код]
Получить объект порта по его ID
- Параметры:
id (str) – Идентификатор снапшота
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект порта
esu.Port
- Тип результата:
object
- create()[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]
Сохранить изменения
- Исключение:
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]
Удалить объект
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
Примеры использования
Создать снапшот для определённого сервера:
from esu import Vm, Snapshot
vm = Vm.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
snapshot = Snapshot(vm=vm, name='Новый снапшот')
snapshot.create()
Восстановить сервер из снапшота:
from esu import Vm, Snapshot
snapshot = Snapshot.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
vm = Vm.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
vm.revert(snapshot=snapshot)
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')
Port(network=network, device=router).create()
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) – Тип
vdc (object) – Объект класса
esu.Vdc
. ВЦОД, к которому относится данный виртуальный сервер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
- create_fip()[исходный код]
Получить объект порта по его ID
- Параметры:
id (str) – Идентификатор порта
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект порта
esu.Port
- Тип результата:
object
- create()[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]
Сохранить изменения
- Исключение:
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- connect()[исходный код]
Подключить
- Исключение:
ObjectHasNoId – Если производится попытка присоединить несуществующий объект
PortAlreadyConnected – Если производится попытка присоединить уже присоединенный порт
- disconnect()[исходный код]
Отключить порт
- Исключение:
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]
Удалить объект
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- force_destroy()[исходный код]
Удалить объект, даже если он подключен к сущности
- Исключение:
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
Примеры использования
См. пример здесь
FirewallTemplate
Шаблон брандмауэра. Метод esu.Vdc.get_firewall_templates()
позволяет получить все шаблоны брандмауэра, доступные в определенном ВЦОДе.
Объект «шаблон брандмауэра»
- class esu.FirewallTemplate(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор шаблона брандмауэра
name (str) – Имя шаблона брандмауэра
vdc (object) – Объект класса
esu.Vdc
. ВЦОД, к которому относится данный шаблон файрволаdescription (str) – описание для шаблона брандмауэра
Предупреждение
Объект доступен только для чтения и не может быть создан, изменен или удален.
- classmethod get_object(id, token=None)[исходный код]
Получить объект шаблона брандмауэра по его ID
- Параметры:
id (str) – Идентификатор шаблона брандмауэра
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект шаблона брандмауэра
esu.FirewallTemplate
- Тип результата:
object
- create()[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]
Сохранить изменения
- Исключение:
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]
Удалить объект
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- get_firewall_rules()[исходный код]
Получить список правил файрвола, доступных в рамках данного шаблона брандмауэра.
- Результат:
Список объектов
esu.FirewallTemplateRule
- Тип результата:
list
Примеры использования
См. пример здесь
FirewallTemplateRule
Правило шаблона брандмауэра. Правила добавляются в уже созданный шаблон брандмауэра
Объект «правило шаблона брандмауэра»
- class esu.FirewallTemplateRule(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор правила брандмауэра
name (str) – Имя правила брандмауэра
firewall (str) – Объект класса
esu.FirewallTemplate
. Шаблон брандмауэра, к которому относится данное правило брандмауэраdirection (str) – направление правила брандмауэра
destination_ip (str) – destination_ip правила брандмауэра
dst_port_range_max (str) – dst_port_range_max правила брандмауэра
dst_port_range_min (str) – dst_port_range_min правила брандмауэра
protocol (str) – protocol правила брандмауэра
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
Примечание
Поля
direction
,name
иprotocol
необходимы для создания.- classmethod get_object(firewall, rule_id, token=None)[исходный код]
Получить объект правил брандмауэра по его ID
- Параметры:
id (str) – Идентификатор правила шаблона брандмауэра
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект правила шаблона брандмауэра
esu.FirewallTemplateRule
- Тип результата:
object
- create()[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]
Сохранить изменения
- Исключение:
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]
Удалить объект
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
Примеры использования
Создать правило для шаблона брандмауэра:
from esu import FirewallTemplate, FirewallTemplateRule
fw_template = FirewallTemplate.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
firewall_rule = QAFirewallRule(firewall=fw_template, name="Rule",
direction="egress", protocol="tcp",
destination_ip="0.0.0.0/0")
firewall_rule.create
Dns
Доменная зона. В доменной зоне могут быть заведены DNS записи различных типов Метод :func:`esu.Project.get_dns_zones`позволяет получить все доменные зоны доступные в проекте.
Объект «доменная зона»
- class esu.Dns(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор Dns
name (str) – Имя Dns
project (object) – Объект класса
esu.Project
. Проект, к которому относится данный Dnstoken (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
Примечание
Поля
name
иproject
необходимы для создания.Поле
name
может быть изменено для существующего объекта.- classmethod get_object(id, token=None)[исходный код]
Получить объект Dns по его ID
- Параметры:
id (str) – Идентификатор Dns
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект Dns
esu.Dns
- Тип результата:
object
- create()[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]
Сохранить изменения
- Исключение:
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]
Удалить объект
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
- get_dns_records()[исходный код]
Получить список днс записей, доступных в рамках данного Dns.
- Результат:
Список объектов
esu.DnsRecord
- Тип результата:
list
Примеры использования
Создать доменную зону в проекте:
from esu import Project, Dns
project = Project.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
dns = Dns(project=project, name='test.com')
dns.create()
DnsRecord
Запись доменной зоны. В доменной зоне могут быть заведены DNS записи различных типов
Объект «запись доменной зоны»
- class esu.DnsRecord(*args, token: Optional[str] = None, **kwargs)[исходный код]
- Параметры:
id (str) – Идентификатор Dns записи
dns_id (str) – Объект класса
esu.Dns
. Днс зона, к которому относится днс записьdata (str) – дата Dns записи
flag (str) – флаг Dns записи
host (str) – хост Dns записи
port (str) – порт Dns записи
priority (str) – приоритет Dns записи
tag (str) – тэг Dns записи
ttl (str) – ttl Dns записи
type (str) – тип Dns записи
weight (str) – вес Dns записи
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
Примечание
Поля
data
,dns
,host
,ttl
,type
необходимы для создания.- classmethod get_object(dns, id, token=None)[исходный код]
Получить объект Dns запись по его ID
- Параметры:
id (str) – Идентификатор Dns записи
token (str) – Токен для доступа к API. Если не передан, будет использована переменная окружения ESU_API_TOKEN
- Результат:
Возвращает объект Dns
esu.DnsRecord
- Тип результата:
object
- create()[исходный код]
Создать объект
- Исключение:
ObjectAlreadyHasId – Если производится попытка создать объект, который уже существует
- save()[исходный код]
Сохранить изменения
- Исключение:
ObjectHasNoId – Если производится попытка сохранить несуществующий объект
- destroy()[исходный код]
Удалить объект
- Исключение:
ObjectHasNoId – Когда производится попытка удалить несуществующий объект
Примеры использования
Создать запись доменной зоны в доменной зоне:
from esu import Dns, DnsRecord
dns = Dns.get_object('d5cd2cdc-b5b0-4d2e-8bc6-ea3f019745f9')
record = DnsRecord(type="A", host="host", data="10.0.1.1",
dns=dns, ttl=86400)
record.create()
0.1.6
Обновление от 2021-07-07
При создании ВЦОДа вместо параметра hypervisor_type следует передавать параметр hypervisor, являющийся объектом
esu.Hypervisor
. Получить список всех доступных гипервизоров можно, вызвав методesu.Project.get_available_hypervisors()