diff --git a/main.py b/main.py index 74fd95a..e840ffb 100644 --- a/main.py +++ b/main.py @@ -530,6 +530,8 @@ def get_node_interfaces(db: Session = Depends(get_db),token_data: dict = Depends detail=str(e) ) + +# !!!!!!!!!!!!!!!!!PASSWORD MUST BE STORED IN MANAGEMENT TABLE!!!!!!!!!!!!!! @app.delete("/spock/del-node-interfaces") def delete_node_interface( uuid: UUID, @@ -548,11 +550,49 @@ def delete_node_interface( status_code=404, detail="Node interface not found" ) + + conn = None + cur = None + try: + conn = psycopg2.connect( + host=node.host, + port=node.port, + dbname=node.dbname, + user=node.user, + password=os.getenv("DB_PASSWORD") + ) + cur = conn.cursor() + cur.execute( + "SELECT spock.node_drop(%s);", + (node.if_name,) + ) - # Print fetched record + result = cur.fetchone() + + conn.commit() + # 2. Delete management row + db.delete(node) + db.commit() + + return { + "status": "success", + "message": f"Spock node {node.if_name} unregistered successfully", + "uuid": str(uuid), + "node_name": node.if_name + } + except Exception as e: + if conn: + conn.rollback() + print(f"Error: {e}") + raise HTTPException( + status_code=500, + detail=f"Failed to unregister node: {str(e)}" + ) + finally: + + if cur: + cur.close() + + if conn: + conn.close() - return { - "status": "success", - "message": "API called DEL API", - "uuid": str(uuid) - }