From edbee69a8f61785a1f9716dc770230bcbd2aaa86 Mon Sep 17 00:00:00 2001 From: Stefan Nilsson Date: Tue, 11 Feb 2025 14:27:28 +0100 Subject: [PATCH] Added delete to servers and clusters --- Dockerfile | 2 +- main.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9dadaeb..cce71a6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.10-slim +FROM python:3.13-slim WORKDIR /app diff --git a/main.py b/main.py index 7ebe1ed..30306bf 100644 --- a/main.py +++ b/main.py @@ -59,6 +59,13 @@ def add_or_update_cluster(name: str, api_token: str): conn.commit() conn.close() +def delete_cluster(name: str): + conn = sqlite3.connect("servers.db") + cursor = conn.cursor() + cursor.execute("DELETE FROM clusters WHERE name = ?", (name,)) + conn.commit() + conn.close() + def add_or_update_server(name: str, ip: str, mac: str, cluster_name: str): conn = sqlite3.connect("servers.db") cursor = conn.cursor() @@ -66,6 +73,13 @@ def add_or_update_server(name: str, ip: str, mac: str, cluster_name: str): conn.commit() conn.close() +def delete_server(name: str): + conn = sqlite3.connect("servers.db") + cursor = conn.cursor() + cursor.execute("DELETE FROM servers WHERE name = ?", (name,)) + conn.commit() + conn.close() + app = FastAPI() class ServerModel(BaseModel): @@ -134,11 +148,18 @@ def get_clusters(): return list_clusters() @app.post("/clusters") +@app.put("/clusters") def add_cluster(cluster: ClusterModel): """Adds or updates a cluster.""" add_or_update_cluster(cluster.name, cluster.api_token) return {"message": "Cluster added/updated successfully"} +@app.delete("/clusters/{cluster_name}") +def remove_cluster(cluster_name: str): + """Deletes a cluster.""" + delete_cluster(cluster_name) + return {"message": "Cluster deleted successfully"} + def check_power_state(server_ip): """Check if the server is online by pinging it.""" response = subprocess.run(["ping", "-c", "1", server_ip], stdout=subprocess.DEVNULL) @@ -186,9 +207,16 @@ def get_servers(): return list_servers() @app.post("/servers") +@app.put("/servers") def add_server(server: ServerModel): """Adds or updates a server.""" add_or_update_server(server.name, server.ip, server.mac, server.cluster_name) return {"message": "Server added/updated successfully"} +@app.delete("/servers/{server_name}") +def remove_server(server_name: str): + """Deletes a server.""" + delete_server(server_name) + return {"message": "Server deleted successfully"} + # Run the server with: uvicorn main:app --host 0.0.0.0 --port 8000