Перенос расширений Python
Требования
- Python 3.10.
- Ключ-АСТРОМ версии 1.286 или более поздней.
dt-extensions-sdk[cli]установлен в вашемPATH.
Проверьте, установлен ли у вас dt-extensions-sdk в PATH, запустив dt-sdk --version на терминале.
|
Последовательность действи
Чтобы перенести существующее расширение Python EF1 с помощью Visual Studio Code, выполните следующие действия.
- Создайте новое расширение EF2.
- Импортируйте расширение EF1 с помощью команды
astromkey extensions: Convert Python. - Преобразуйте код, переместив класс из исходного расширения в файл
__main__.pyнового расширения.
Создание нового расширения EF2
- Откройте пустую папку в Visual Studio Code, затем выполните команду
astromkey extensions: Initialize Workspace. - Выберите версию схемы (рекомендуется последняя) и сертификаты, которые вы хотите использовать для подписи расширения.
- Выберите тип проекта
Python Extension 2.0. - Дайте своему расширению имя; оно должно соответствовать соглашению об именовании модулей Python, используя все строчные буквы с необязательными подчеркиваниями.
Импорт существующего расширения EF1
Первый шаг — конвертировать старый файл plugin.json в новый формат activationSchema.json. Это автоматически создаст пользовательский интерфейс Settings 2.0 для вашего расширения, который определяет пользовательский интерфейс для настройки расширения.
Выполните команду astromkey extensions: Convert Python. Вы можете импортировать существующее расширение Python из:
- Расширения zip- файла
- Файла plugin.json
- Вашей среды Ключ-АСТРОМ
В этом примере мы импортируем из среды Ключ-АСТРОМ , что дает вам список всех расширений Python в этой среде.
Если вы хотите импортировать данные со своего компьютера, откроется окно выбора файлов, в котором вы сможете выбрать ZIP-файл расширения или файл plugin.json.
После выбора расширения ваши настройки activationSchema.json будут перезаписаны правильными. Вам необходимо проверить файл, чтобы убедиться, что ваш интерфейс выглядит так, как вы хотите.
При импорте локального расширения ЕдиногоАгента удалите запись activation > remote из файла extension.yaml file.
Однако при импорте удаленного расширения АктивногоШлюза удалите activation > local.
Вы также можете заставить свое расширение работать удаленно и локально, сохранив обе записи и изменив файл activationSchema.json соответствующим образом.
Изменение кода расширения
Перенесите существующий код расширения в файл нового расширения __main__.py. Проще всего это сделать, вставив код из существующего класса расширения в новый класс ExtensionImpl.
Вот наиболее существенные изменения, которые вам необходимо внести в свой код:
Справочник по преобразованию кодов
| Описание | Метод EF1 | Метод EF2 | Примечания |
|---|---|---|---|
| Ведение логов | self.logger.info("message")
|
self.logger.info("message")
|
Остается прежним |
| Получение пользовательских параметров | self.config.get("param_name", "default_value")
|
self.activation_config.get("param_name", "default_value")
|
Вы можете найти и заменить все записи self.config. на self.activation_config.
|
| Сообщение о событии | self.results_builder.report_custom_info_event
|
self.report_dt_event
|
Постарайтесь не включать топологию (группы, устройства, идентификаторы) в код; это определяется далее в файле extension.yaml.
|
| Сообщение метрики | device.absolute("metric_key", metric_value, {"dimension_name": "dimension_value"})
|
self.report_metric("metric_key", metric_value, {"dimension_name": "dimension_value"})
|
В коде Python больше нет концепции device; отправляйте метрики напрямую.
|
| Создание группы и пользовательского устройства | self.topology_builder.create_group,group.create_device
|
n/a
|
Не существует; топология определена в файле extension.yaml.
|
Создание и загрузка расширения
Соберите расширение, выполнив команду astromkey extensions: Build. Если сборка прошла успешно, вы увидите приглашение загрузить расширение в среду Ключ-АСТРОМ и активировать его. Примите оба приглашения.
Теперь ваше расширение загружено в Ключ-АСТРОМ, и вы можете создать конфигурации мониторинга, чтобы начать мониторинг.