43 lines
1.2 KiB
Python
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) |