57 lines
2.3 KiB
Python
57 lines
2.3 KiB
Python
"""
|
|
Чтение списка разрешённых сервисов из services_{stand}.txt.
|
|
|
|
Зачем: не все сервисы должны быть доступны для тестирования.
|
|
Файл services_test.txt (или services_dev.txt) содержит только те сервисы,
|
|
которые настроены и готовы к автотестам.
|
|
|
|
Формат файла:
|
|
# Комментарий
|
|
1 dummy # Болванка
|
|
21 vdc # Virtual Data Center
|
|
|
|
Закомментированные (#) строки исключаются.
|
|
Пустые строки игнорируются.
|
|
Первое слово в строке — service_id (число).
|
|
|
|
Файл лежит в site/config/, пушится с кодом, деплоится вместе с приложением.
|
|
При изменении списка: edit → commit → push → redeploy.
|
|
"""
|
|
|
|
import os
|
|
import re
|
|
|
|
# Путь к папке config относительно этого файла:
|
|
# service_list.py → site/operations/
|
|
# dirname → site/operations
|
|
# dirname(dirname) → site
|
|
# + "config" → site/config
|
|
_CONFIG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "config")
|
|
|
|
|
|
def load_service_ids(stand="test"):
|
|
"""Вернуть set разрешённых service_id для указанного стенда.
|
|
|
|
Args:
|
|
stand: str — "dev" или "test".
|
|
|
|
Returns:
|
|
set[int] — множество service_id. Пустой set если файла нет → показываем все."""
|
|
path = os.path.join(_CONFIG_DIR, f"services_{stand}.txt")
|
|
ids = set()
|
|
try:
|
|
with open(path) as f:
|
|
for line in f:
|
|
line = line.strip()
|
|
# Пропускаем пустые строки и комментарии
|
|
if not line or line.startswith("#"):
|
|
continue
|
|
# Формат: "1 dummy # Болванка"
|
|
# Берём первое слово, проверяем что это число
|
|
parts = line.split()
|
|
if parts and parts[0].isdigit():
|
|
ids.add(int(parts[0]))
|
|
except FileNotFoundError:
|
|
pass # файла нет — возвращаем пустой set → показываем все сервисы
|
|
return ids
|