feat:
--Added Read Registered nodes API --Added DEL unregister Node
This commit is contained in:
1 parent
7a0e8c7cd6
commit
9977440c2d
4 files changed
+149
-18
No files matched your search
+17
-1
@@ -1,7 +1,23 @@
|
|||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.orm import sessionmaker, declarative_base
|
from sqlalchemy.orm import sessionmaker, declarative_base
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
DATABASE_URL = "postgresql://postgres:postgres@172.16.10.178:5444/postgres"
|
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
DB_HOST = os.getenv("DB_HOST")
|
||||||
|
DB_PORT = os.getenv("DB_PORT")
|
||||||
|
DB_NAME = os.getenv("DB_NAME")
|
||||||
|
DB_USER = os.getenv("DB_USER")
|
||||||
|
DB_PASSWORD = os.getenv("DB_PASSWORD")
|
||||||
|
|
||||||
|
DATABASE_URL = (
|
||||||
|
f"postgresql://{DB_USER}:{DB_PASSWORD}"
|
||||||
|
f"@{DB_HOST}:{DB_PORT}/{DB_NAME}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# DATABASE_URL = "postgresql://postgres:postgres@172.16.10.178:5444/postgres"
|
||||||
|
|
||||||
engine = create_engine(
|
engine = create_engine(
|
||||||
DATABASE_URL,
|
DATABASE_URL,
|
||||||
|
|||||||
@@ -8,13 +8,17 @@ from psycopg2.extras import RealDictCursor
|
|||||||
import asyncio
|
import asyncio
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
|
||||||
from database import Base, engine,SessionLocal
|
from database import Base, engine,SessionLocal,get_db
|
||||||
|
from uuid import UUID
|
||||||
# import models
|
# import models
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
from models import NodeInterface
|
from models import NodeInterface
|
||||||
origins = [
|
import os
|
||||||
"http://localhost:5173",
|
from dotenv import load_dotenv
|
||||||
"http://127.0.0.1:5173",
|
|
||||||
]
|
load_dotenv()
|
||||||
|
|
||||||
|
origins = os.getenv("CORS_ORIGINS", "").split(",")
|
||||||
|
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
@@ -33,9 +37,9 @@ app.add_middleware(
|
|||||||
class RegisterNodeRequest(BaseModel):
|
class RegisterNodeRequest(BaseModel):
|
||||||
node_name: str
|
node_name: str
|
||||||
host: str
|
host: str
|
||||||
port: int = 5444
|
port: int
|
||||||
dbname: str = "postgres"
|
dbname: str
|
||||||
user: str = "postgres"
|
user: str
|
||||||
password: str
|
password: str
|
||||||
|
|
||||||
|
|
||||||
@@ -44,14 +48,14 @@ class LinkNodeRequest(BaseModel):
|
|||||||
|
|
||||||
# The node where sub_create() must run
|
# The node where sub_create() must run
|
||||||
subscriber_host: str
|
subscriber_host: str
|
||||||
subscriber_port: int = 5444
|
subscriber_port: int
|
||||||
|
|
||||||
# The provider node
|
# The provider node
|
||||||
provider_host: str
|
provider_host: str
|
||||||
provider_port: int = 5444
|
provider_port: int
|
||||||
|
|
||||||
dbname: str = "postgres"
|
dbname: str
|
||||||
user: str = "postgres"
|
user: str
|
||||||
password: str
|
password: str
|
||||||
|
|
||||||
|
|
||||||
@@ -75,8 +79,9 @@ class LinkNodeRequest(BaseModel):
|
|||||||
# ============================================================
|
# ============================================================
|
||||||
# JWT TOKEN CREATION
|
# JWT TOKEN CREATION
|
||||||
# ============================================================
|
# ============================================================
|
||||||
SECRET_KEY = "my-super-secret-key-change-this"
|
SECRET_KEY = os.getenv("SECRET_KEY")
|
||||||
ALGORITHM = "HS256"
|
ALGORITHM = os.getenv("ALGORITHM", "HS256")
|
||||||
|
# ALGORITHM = "HS256"
|
||||||
|
|
||||||
|
|
||||||
@app.post("/get-token")
|
@app.post("/get-token")
|
||||||
@@ -378,6 +383,7 @@ def link_nodes(data: LinkNodeRequest,token_data: dict = Depends(verify_token)):
|
|||||||
if conn:
|
if conn:
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
#!!!!!!!!!!!!THIS IS A TEMPORARY FIXSS!!!!!!!!!!!!!
|
||||||
|
|
||||||
DB_CONFIG = {
|
DB_CONFIG = {
|
||||||
"host": "172.16.10.123",
|
"host": "172.16.10.123",
|
||||||
@@ -494,4 +500,59 @@ def get_spock_subscription_status(token_data: dict = Depends(verify_token),):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/spock/node-interfaces")
|
||||||
|
def get_node_interfaces(db: Session = Depends(get_db),token_data: dict = Depends(verify_token)):
|
||||||
|
|
||||||
|
try:
|
||||||
|
|
||||||
|
rows = db.query(NodeInterface).all()
|
||||||
|
|
||||||
|
return {
|
||||||
|
"status": "success",
|
||||||
|
"count": len(rows),
|
||||||
|
"nodes": [
|
||||||
|
{"uuid": str(row.uuid),
|
||||||
|
"if_id": row.if_id,
|
||||||
|
"if_name": row.if_name,
|
||||||
|
"if_nodeid": row.if_nodeid,
|
||||||
|
"host": row.host,
|
||||||
|
"port": row.port,
|
||||||
|
"dbname": row.dbname,
|
||||||
|
"user": row.user
|
||||||
|
}
|
||||||
|
for row in rows
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=500,
|
||||||
|
detail=str(e)
|
||||||
|
)
|
||||||
|
|
||||||
|
@app.delete("/spock/del-node-interfaces")
|
||||||
|
def delete_node_interface(
|
||||||
|
uuid: UUID,
|
||||||
|
db: Session = Depends(get_db),
|
||||||
|
token_data: dict = Depends(verify_token)
|
||||||
|
):
|
||||||
|
print("API called DEL API")
|
||||||
|
print(f"uuid received: {uuid}")
|
||||||
|
node = (
|
||||||
|
db.query(NodeInterface)
|
||||||
|
.filter(NodeInterface.uuid == uuid)
|
||||||
|
.first()
|
||||||
|
)
|
||||||
|
if not node:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=404,
|
||||||
|
detail="Node interface not found"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Print fetched record
|
||||||
|
|
||||||
|
return {
|
||||||
|
"status": "success",
|
||||||
|
"message": "API called DEL API",
|
||||||
|
"uuid": str(uuid)
|
||||||
|
}
|
||||||
+44
-1
@@ -60,6 +60,14 @@ class LinkNodeRequest(BaseModel):
|
|||||||
# JWT TOKEN CREATION
|
# JWT TOKEN CREATION
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
|
||||||
|
@app.post("/spock/nodesoo")
|
||||||
|
def get_node_interfaces1():
|
||||||
|
print("Fetching node interfaces from the database...")
|
||||||
|
|
||||||
|
return {
|
||||||
|
"status": "working"
|
||||||
|
}
|
||||||
|
|
||||||
@app.post("/get-token")
|
@app.post("/get-token")
|
||||||
def get_token():
|
def get_token():
|
||||||
|
|
||||||
@@ -504,4 +512,39 @@ def get_spock_subscription_status(
|
|||||||
cursor.close()
|
cursor.close()
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
# @app.get("/spock/node-interfaces")
|
||||||
|
# def get_node_interfaces():
|
||||||
|
# print("Fetching node interfaces from the database...")
|
||||||
|
# db = SessionLocal()
|
||||||
|
|
||||||
|
# try:
|
||||||
|
# interfaces = db.query(NodeInterface).all()
|
||||||
|
|
||||||
|
# return {
|
||||||
|
# "status": "success",
|
||||||
|
# "count": len(interfaces),
|
||||||
|
# "nodes": [
|
||||||
|
# {
|
||||||
|
# "if_id": node.if_id,
|
||||||
|
# "if_name": node.if_name,
|
||||||
|
# "if_nodeid": node.if_nodeid,
|
||||||
|
# "host": node.host,
|
||||||
|
# "port": node.port,
|
||||||
|
# "dbname": node.dbname,
|
||||||
|
# "user": node.user
|
||||||
|
# }
|
||||||
|
# for node in interfaces
|
||||||
|
# ]
|
||||||
|
# }
|
||||||
|
|
||||||
|
# except Exception as e:
|
||||||
|
# raise HTTPException(
|
||||||
|
# status_code=500,
|
||||||
|
# detail=str(e)
|
||||||
|
# )
|
||||||
|
|
||||||
|
# finally:
|
||||||
|
# db.close()
|
||||||
@@ -1,17 +1,27 @@
|
|||||||
from sqlalchemy import Column, BigInteger, Integer, String
|
from sqlalchemy import Column, BigInteger, Integer, String
|
||||||
from database import Base
|
from database import Base
|
||||||
|
import uuid
|
||||||
|
from sqlalchemy.dialects.postgresql import UUID
|
||||||
|
|
||||||
class NodeInterface(Base):
|
class NodeInterface(Base):
|
||||||
__tablename__ = "fastAPI_node_interface"
|
__tablename__ = "fastAPI_node_interface"
|
||||||
|
|
||||||
|
uuid = Column(
|
||||||
|
UUID(as_uuid=True),
|
||||||
|
primary_key=True,
|
||||||
|
default=uuid.uuid4,
|
||||||
|
nullable=False
|
||||||
|
)
|
||||||
|
|
||||||
if_id = Column(
|
if_id = Column(
|
||||||
BigInteger,
|
BigInteger,
|
||||||
primary_key=True
|
unique=True,
|
||||||
|
nullable=False
|
||||||
)
|
)
|
||||||
|
|
||||||
if_name = Column(
|
if_name = Column(
|
||||||
String,
|
String,
|
||||||
|
unique=True,
|
||||||
nullable=False
|
nullable=False
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -22,6 +32,7 @@ class NodeInterface(Base):
|
|||||||
|
|
||||||
host = Column(
|
host = Column(
|
||||||
String,
|
String,
|
||||||
|
unique=True,
|
||||||
nullable=False
|
nullable=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user