- critical: listen_port по умолчанию 0 (эфемерный) — несколько ConfigEntry не конфликтуют; тест двух записей на дефолтном порту - manifest: добавлен обязательный ключ codeowners - unload: set_log_handler(None) вынесен в executor (не блокирует loop); рефкаунт лог-пампа без гонки (старт после успешного setup) - config flow: возврат введённого в форму при ошибке (add_suggested_values_to_schema; секреты исключены), YAML-import подключён через async_setup + SOURCE_IMPORT, ProvisionError.kind вместо разбора русского текста, валидация device_port/key_id из JSON - trial: требует получения всех базовых свойств шаблона (не пустой ok), безопасное создание Session - py-ci.sh: отсутствие .venv-ha — ошибка (PY_CI_SKIP_HA=1 для пропуска); pytest.ini testpaths
41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
"""Константы интеграции fglair."""
|
|
from __future__ import annotations
|
|
|
|
from pyfglair.provision import REGIONS as _PROVISION_REGIONS
|
|
|
|
DOMAIN = "fglair"
|
|
|
|
CONF_HOST = "host"
|
|
CONF_DEVICE_PORT = "device_port"
|
|
CONF_DSN = "dsn"
|
|
CONF_LANIP_KEY = "lanip_key"
|
|
CONF_LANIP_KEY_ID = "lanip_key_id"
|
|
CONF_MODEL = "model"
|
|
CONF_TEMPLATE = "template"
|
|
CONF_NAME = "name"
|
|
CONF_LISTEN_PORT = "listen_port"
|
|
CONF_KEEPALIVE_MS = "keepalive_ms"
|
|
CONF_REGION = "region"
|
|
CONF_EMAIL = "email"
|
|
CONF_PASSWORD = "password"
|
|
CONF_CONFIG_JSON = "config_json"
|
|
|
|
DEFAULT_DEVICE_PORT = 80
|
|
# 0 => свободный эфемерный порт: несколько ConfigEntry (несколько
|
|
# кондиционеров) не конфликтуют; модулю фактический порт сообщается в
|
|
# local_reg (PROTOCOL §1).
|
|
DEFAULT_LISTEN_PORT = 0
|
|
DEFAULT_KEEPALIVE_MS = 15000
|
|
TRIAL_TIMEOUT = 10.0
|
|
|
|
REGIONS = sorted(_PROVISION_REGIONS)
|
|
|
|
TRIAL_ERRORS = {
|
|
"no_slots": "no_slots",
|
|
"key_mismatch": "key_mismatch",
|
|
"unreachable": "cannot_connect",
|
|
"timeout": "timeout",
|
|
"start_failed": "cannot_connect",
|
|
"properties_missing": "cannot_connect",
|
|
}
|