Исправление ошибки 500 при сохранении исключенных контейнеров

- Исправлен путь к файлу excluded_containers.json в функциях load_excluded_containers и save_excluded_containers
- Добавлено создание директории при необходимости
- Улучшено логирование операций с файлом
- Протестирована функциональность API endpoints
- Обновлен список исключенных контейнеров

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-09-01 18:18:09 +03:00
parent 4077142f79
commit d570807c02
4 changed files with 319 additions and 42 deletions

View File

@@ -30,17 +30,20 @@ def load_excluded_containers() -> List[str]:
Сайт: https://devops.org.ru
"""
try:
with open("app/excluded_containers.json", "r", encoding="utf-8") as f:
# Определяем путь к файлу относительно корня проекта
file_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "excluded_containers.json")
with open(file_path, "r", encoding="utf-8") as f:
data = json.load(f)
return data.get("excluded_containers", [])
except FileNotFoundError:
docker_logger.warning("Файл app/excluded_containers.json не найден, используем пустой список")
docker_logger.warning(f"Файл excluded_containers.json не найден по пути {file_path}, используем пустой список")
return []
except json.JSONDecodeError as e:
docker_logger.error(f"Ошибка парсинга app/excluded_containers.json: {e}")
docker_logger.error(f"Ошибка парсинга excluded_containers.json: {e}")
return []
except Exception as e:
docker_logger.error(f"Ошибка загрузки app/excluded_containers.json: {e}")
docker_logger.error(f"Ошибка загрузки excluded_containers.json: {e}")
return []
def save_excluded_containers(containers: List[str]) -> bool:
@@ -50,15 +53,24 @@ def save_excluded_containers(containers: List[str]) -> bool:
Сайт: https://devops.org.ru
"""
try:
# Определяем путь к файлу относительно корня проекта
file_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "excluded_containers.json")
data = {
"excluded_containers": containers,
"description": "Список контейнеров, которые генерируют слишком много логов и исключаются из отображения"
}
with open("app/excluded_containers.json", "w", encoding="utf-8") as f:
# Создаем директорию, если она не существует
os.makedirs(os.path.dirname(file_path), exist_ok=True)
with open(file_path, "w", encoding="utf-8") as f:
json.dump(data, f, indent=2, ensure_ascii=False)
docker_logger.info(f"Список исключенных контейнеров сохранен в {file_path}")
return True
except Exception as e:
docker_logger.error(f"Ошибка сохранения app/excluded_containers.json: {e}")
docker_logger.error(f"Ошибка сохранения excluded_containers.json: {e}")
return False
def get_all_projects() -> List[str]: