""" Чтение списка разрешённых сервисов из 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