Вы можете добавить в DCImanager 6 собственный обработчик ИБП. Для этого создайте код обработчика и загрузите его в платформу.
Подготовка окружения
Обработчик ИБП должен быть написан на языке Python. Рекомендуем использовать версию Python не ниже 3.9.
Вы можете создать обработчик на основе существующего проекта. Чтобы скопировать проект, подключитесь к серверу-локации DCImanager 6 по SSH и выполните команду:
При создании обработчика могут быть полезны директории проекта:
/common — общие вспомогательные классы и функции;
/ups_common — вспомогательные классы и функции для работы с ИБП;
/ups_common/handlers — обработчики ИБП.
Требуемые библиотеки Python и их версии вы можете посмотреть в файле проекта requirements.txt. Чтобы установить нужные библиотеки, выполните команду:
pip3 install -r requirements.txt
Для проверки типов данных в проекте рекомендуем использовать анализатор mypy.
Создание обработчика
Класс для работы с ИБП
Класс ИБП наследуется от класса:
BaseSnmpUps — для устройств, работающих через протокол SNMP;
BaseUps — для остальных устройств.
Класс BaseSnmpUps содержит методы взаимодействия с ИБП по протоколу SNMP:
snmp_get — выполнить запрос чтения по определённому OID;
snmp_set — выполнить модифицирующий запрос по определённому OID;
snmp_walk — выполнить запрос, результатом которого будет список.
Пример описания класса
class ExampleHandlerSnmp(BaseSnmpUps):
"""Example handler class."""
def __init__(self, ups_data: UpsSnmpData):
"""__init__.
Args:
ups_data (UpsSnmpData): ups connection data
"""
super().__init__(ups_data)
Методы для работы с ИБП
Чтобы DCImanager 6 мог взаимодействовать с ИБП, переопределите методы класса BaseUps:
status — опрос ИБП;
port_up — включение порта;
port_down — выключение порта;
statistic — сбор статистики.
Служба работы с оборудованием использует не "сырые" json-данные, а их объектное представление.Экземляры класса UpsView — представление ИБП. Имеет следующие параметры:
load_percentage — нагрузка, %;
charge_time — заряд, мин;
input_power — выходная мощность, кВт;
output_power — потребляемая мощность, кВт.
Класс UpsData наследуется от базового класса ConnectionParams и определяет данные для доступа к ИБП.
Каждый файл-обработчик должен содержать функцию make_handler. Эта функция создаёт объект обработчика:
<internal_handler_name> — уникальное внутреннее имя обработчика
<handler_name> — имя обработчика для отображения в интерфейсе платформы
<handler_protocol> — протокол для работы с обработчиком. Например, snmp
features — параметры вывода информации в пользовательский интерфейс. Для ИБП дополнительных параметров не предусмотрено, поэтому единственным возможным значением будет пустой массив.
Ответ будет содержать id созданного разработчика. Сохраните это значение.
<import_path> — относительный путь для импорта. Например, если файл обработчика my_handler.py находится в директории handler_dir, то относительный путь будет handler_dir.my_handler
Вы также можете использовать эту команду для загрузки новых версий обработчика в платформу.