snapix/backend/main.py

43 lines
1.2 KiB
Python

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from models import BackupRequest, RestoreRequest
from k8s_utils import get_namespaces, get_pvcs, get_all_backup_pvcs
from backup_manager import create_backup, restore_backup
app = FastAPI()
# CORS ל־React frontend
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # עדיף לשנות בהמשך לכתובת ספציפית
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/namespaces")
def list_namespaces():
return get_namespaces()
@app.get("/pvcs/{namespace}")
def list_pvcs(namespace: str):
return get_pvcs(namespace)
@app.post("/backup")
def backup_pvc(request: BackupRequest):
create_backup(request.namespace, request.pvc_name, request.backup_name)
return {"message": "Backup job created."}
@app.post("/restore")
def restore_pvc(request: RestoreRequest):
restore_backup(request.target_namespace, request.target_pvc, request.backup_name)
return {"message": "Restore job created."}
@app.get("/backup-pvcs")
def list_backup_pvcs():
return get_all_backup_pvcs()
if __name__ == "__main__":
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)