Compare commits
No commits in common. "a0bdb57b79d5e5725a3037f4d1305cdf92eab61e" and "68b518e66191b474a3daef9a8e0c15342afc1446" have entirely different histories.
a0bdb57b79
...
68b518e661
@ -1,4 +1,4 @@
|
||||
FROM python:3.13-slim
|
||||
FROM python:3.10-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
32
main.py
32
main.py
@ -7,7 +7,6 @@ import sqlite3
|
||||
from wakeonlan import send_magic_packet
|
||||
from pydantic import BaseModel
|
||||
from fastapi.openapi.utils import get_openapi
|
||||
from ping3 import ping
|
||||
|
||||
# Database setup
|
||||
def init_db():
|
||||
@ -60,13 +59,6 @@ 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()
|
||||
@ -74,13 +66,6 @@ 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):
|
||||
@ -149,21 +134,15 @@ 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."""
|
||||
return "on" if ping(server_ip, timeout=1) else "off"
|
||||
response = subprocess.run(["ping", "-c", "1", server_ip], stdout=subprocess.DEVNULL)
|
||||
return "on" if response.returncode == 0 else "off"
|
||||
|
||||
@app.get("/states/{server_name}")
|
||||
def get_power_status(server_name: str):
|
||||
@ -207,16 +186,9 @@ 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
|
||||
|
@ -6,7 +6,6 @@ click==8.1.8
|
||||
fastapi==0.115.8
|
||||
h11==0.14.0
|
||||
idna==3.10
|
||||
ping3==4.0.8
|
||||
pydantic==2.10.6
|
||||
pydantic_core==2.27.2
|
||||
requests==2.32.3
|
||||
|
Loading…
Reference in New Issue
Block a user