Files
bgp-server/scripts/reload_prefixes.py
T
denozord 5d4d24b49f
Build and Push Docker Image / build (push) Has been cancelled
Sure! Pl
2025-07-11 13:23:21 +07:00

104 lines
3.4 KiB
Python

#!/usr/bin/env python3
"""
Скрипт для перезагрузки префиксов без перезапуска BGP сервера
"""
import subprocess
import sys
import time
from pathlib import Path
def run_command(cmd):
"""Выполнение команды"""
try:
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
return result.returncode == 0, result.stdout, result.stderr
except Exception as e:
return False, "", str(e)
def reload_prefixes():
"""Перезагрузка префиксов"""
print("Reloading prefixes...")
# Остановка процесса загрузки префиксов
print("Stopping prefix loader process...")
success, output, error = run_command("docker exec bgp-server pkill -f load_prefixes.py")
if not success:
print("Warning: Could not stop prefix loader process")
# Ожидание завершения процесса
time.sleep(2)
# Проверка что процесс остановлен
success, output, error = run_command("docker exec bgp-server pgrep -f load_prefixes.py")
if success:
print("Error: Prefix loader process is still running")
return False
print("Prefix loader process stopped successfully")
# Запуск нового процесса загрузки префиксов
print("Starting new prefix loader process...")
success, output, error = run_command("docker exec bgp-server /app/scripts/load_prefixes.py &")
if success:
print("Prefix loader process started successfully")
return True
else:
print(f"Error starting prefix loader: {error}")
return False
def check_status():
"""Проверка статуса после перезагрузки"""
print("Checking status...")
time.sleep(5)
# Проверка процесса
success, output, error = run_command("docker exec bgp-server pgrep -f load_prefixes.py")
if success:
print("✓ Prefix loader process is running")
else:
print("✗ Prefix loader process is not running")
return False
# Проверка логов
success, output, error = run_command("docker exec bgp-server tail -n 5 /app/logs/prefixes.log")
if success:
print("Recent log entries:")
print(output)
else:
print("No recent log entries found")
return True
def main():
"""Основная функция"""
print("=== BGP Prefix Reloader ===")
# Проверка что контейнер запущен
success, output, error = run_command("docker ps --filter name=bgp-server --format '{{.Status}}'")
if not success or not output.strip():
print("Error: BGP server container is not running")
print("Please start the container first: docker-compose up -d")
return 1
print("BGP server container is running")
# Перезагрузка префиксов
if reload_prefixes():
print("Prefix reload completed successfully")
# Проверка статуса
if check_status():
print("✓ All checks passed")
return 0
else:
print("✗ Some checks failed")
return 1
else:
print("✗ Prefix reload failed")
return 1
if __name__ == "__main__":
sys.exit(main())