--ADDED create cluster api
This commit is contained in:
george committed 2026-09-10 11:43:09 +05:30
1 parent 96be1fc94e
commit d0e1d31093
3 files changed
+144 -5

No files matched your search

+5
View File
@@ -176,6 +176,11 @@ SELECT spock.sub_create(
provider_dsn := 'host=172.16.10.123 port=5444 dbname=postgres user=postgres password=postgres'
);
|======|
|RESULT|
|======|
SELECT * FROM spock.sub_show_status();
|=============|
|Register Node|
|=============|
+71 -3
View File
@@ -64,6 +64,12 @@ class NodeLinkRequest(BaseModel):
from_node: str
to_node: str
class ClusterRequest(BaseModel):
cluster_name: str
links: list[tuple[str, str]]
#POST /register-node
# {
# "node_name": "node2",
@@ -601,8 +607,8 @@ def delete_node_interface(
conn.close()
@app.post("/spock/link-nodes-abstract")
def link_nodes_abstract(data: NodeLinkRequest,db: Session = Depends(get_db),token_data: dict = Depends(verify_token)):
# @app.post("/spock/link-nodes-abstract")
def link_nodes_abstract(data: NodeLinkRequest,db: Session):
try:
@@ -663,7 +669,7 @@ def link_nodes_abstract(data: NodeLinkRequest,db: Session = Depends(get_db),toke
# Call internal function
result = link_nodes(link_data)
print("Linking Result:", result["status"])
#==============================================================================
@@ -690,3 +696,65 @@ def link_nodes_abstract(data: NodeLinkRequest,db: Session = Depends(get_db),toke
status_code=500,
detail="Internal server error"
)
@app.post("/spock/create_cluster")
# INPUT EXAMPLE
# {
# "cluster_name": "cluster1",
# "links": [
# ["node1", "node2"],
# ["node2", "node1"]
# ]
# }
def create_cluster(data: ClusterRequest,db: Session = Depends(get_db),token_data: dict = Depends(verify_token)):
try:
print("Cluster Name:", data.cluster_name)
print("Links:", data.links)
results = []
for from_node, to_node in data.links:
print(f"{from_node} -> {to_node}")
#=================
link_request = NodeLinkRequest(
from_node=from_node,
to_node=to_node
)
result = link_nodes_abstract(
link_request,
db
)
print(
f"Successfully linked {from_node} -> {to_node}"
)
results.append({
"from_node": from_node,
"to_node": to_node,
"status": "success"
})
return {
"cluster_name": data.cluster_name,
"links": data.links,
"cluster_name": data.cluster_name,
"links": results
}
except HTTPException:
raise
except Exception as e:
print("Cluster creation failed:", str(e))
raise HTTPException(
status_code=500,
detail="Cluster creation failed"
)
+68 -2
View File
@@ -1,8 +1,10 @@
from sqlalchemy import Column, BigInteger, Integer, String
from database import Base
from database import Base, engine
import uuid
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from sqlalchemy import text
class NodeInterface(Base):
__tablename__ = "fastAPI_node_interface"
@@ -50,3 +52,67 @@ class NodeInterface(Base):
String,
nullable=False
)
cluster_id = Column(
UUID(as_uuid=True),
ForeignKey("fastAPI_cluster.uuid"),
nullable=True
)
cluster = relationship(
"Cluster",
back_populates="nodes"
)
class Cluster(Base):
__tablename__ = "fastAPI_cluster"
uuid = Column(
UUID(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
nullable=False
)
cluster_name = Column(
String,
unique=True,
nullable=False
)
nodes = relationship(
"NodeInterface",
back_populates="cluster"
)
#EXPERIMENTAL
def add_cluster_id_column():
with engine.begin() as conn:
conn.execute(text("""
ALTER TABLE "fastAPI_node_interface"
ADD COLUMN IF NOT EXISTS cluster_id UUID;
"""))
conn.execute(text("""
ALTER TABLE "fastAPI_node_interface"
ADD CONSTRAINT fk_node_interface_cluster
FOREIGN KEY (cluster_id)
REFERENCES "fastAPI_cluster"(uuid);
"""))
# add_cluster_id_column()