init(app): initial version
This commit is contained in:
0
app/routes/__init__.py
Normal file
0
app/routes/__init__.py
Normal file
19
app/routes/export.py
Normal file
19
app/routes/export.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Export data in YAML or JSON format
|
||||
from fastapi import APIRouter
|
||||
from database import fetch_all
|
||||
import yaml
|
||||
import json
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.get("/export")
|
||||
def export_data(format: str = "yaml"):
|
||||
data = {
|
||||
"metal_nodes": fetch_all("metal_nodes"),
|
||||
"virtual_machines": fetch_all("virtual_machines"),
|
||||
"kubernetes_nodes": fetch_all("kubernetes_nodes"),
|
||||
}
|
||||
# Return data in the requested format
|
||||
if format.lower() == "yaml":
|
||||
return yaml.safe_dump(data)
|
||||
return json.dumps(data, indent=2)
|
||||
32
app/routes/k8s.py
Normal file
32
app/routes/k8s.py
Normal file
@@ -0,0 +1,32 @@
|
||||
from fastapi import APIRouter
|
||||
from pydantic import BaseModel
|
||||
from typing import List
|
||||
from database import insert_kubernetes_node, fetch_all
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
class KubernetesNode(BaseModel):
|
||||
cluster_name: str
|
||||
node_name: str
|
||||
cpu: int
|
||||
memory: str
|
||||
storage: str
|
||||
type: str
|
||||
namespaces: List[str]
|
||||
|
||||
@router.get("/k8s/data")
|
||||
def get_k8s_data():
|
||||
return {"kubernetes_nodes": fetch_all("kubernetes_nodes")}
|
||||
|
||||
@router.post("/k8s/data")
|
||||
def add_k8s_data(node: KubernetesNode):
|
||||
insert_kubernetes_node(
|
||||
cluster_name=node.cluster_name,
|
||||
node_name=node.node_name,
|
||||
cpu=node.cpu,
|
||||
memory=node.memory,
|
||||
storage=node.storage,
|
||||
node_type=node.type,
|
||||
namespaces=node.namespaces
|
||||
)
|
||||
return {"message": f"Kubernetes node '{node.node_name}' in cluster '{node.cluster_name}' added successfully."}
|
||||
33
app/routes/metal.py
Normal file
33
app/routes/metal.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from fastapi import APIRouter
|
||||
from pydantic import BaseModel
|
||||
from database import insert_metal_node, fetch_all
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
class MetalNode(BaseModel):
|
||||
name: str
|
||||
location: str
|
||||
vendor: str
|
||||
cpu: int
|
||||
memory: str
|
||||
storage: str
|
||||
time_on_duty: int
|
||||
initial_cost: float
|
||||
|
||||
@router.get("/metal/data")
|
||||
def get_metal_data():
|
||||
return {"metal_nodes": fetch_all("metal_nodes")}
|
||||
|
||||
@router.post("/metal/data")
|
||||
def add_metal_data(node: MetalNode):
|
||||
insert_metal_node(
|
||||
name=node.name,
|
||||
location=node.location,
|
||||
vendor=node.vendor,
|
||||
cpu=node.cpu,
|
||||
memory=node.memory,
|
||||
storage=node.storage,
|
||||
time_on_duty=node.time_on_duty,
|
||||
initial_cost=node.initial_cost
|
||||
)
|
||||
return {"message": f"Metal node '{node.name}' added successfully."}
|
||||
29
app/routes/vm.py
Normal file
29
app/routes/vm.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from fastapi import APIRouter
|
||||
from pydantic import BaseModel
|
||||
from database import insert_virtual_machine, fetch_all
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
class VirtualMachine(BaseModel):
|
||||
name: str
|
||||
location: str
|
||||
cpu: int
|
||||
memory: str
|
||||
storage: str
|
||||
type: str
|
||||
|
||||
@router.get("/vm/data")
|
||||
def get_vm_data():
|
||||
return {"virtual_machines": fetch_all("virtual_machines")}
|
||||
|
||||
@router.post("/vm/data")
|
||||
def add_vm_data(vm: VirtualMachine):
|
||||
insert_virtual_machine(
|
||||
name=vm.name,
|
||||
location=vm.location,
|
||||
cpu=vm.cpu,
|
||||
memory=vm.memory,
|
||||
storage=vm.storage,
|
||||
vm_type=vm.type
|
||||
)
|
||||
return {"message": f"Virtual machine '{vm.name}' added successfully."}
|
||||
Reference in New Issue
Block a user