fix(export): use content type for YAML export
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
from fastapi import APIRouter
|
from fastapi import APIRouter, Response
|
||||||
from database import fetch_all
|
from database import fetch_all
|
||||||
import yaml
|
import yaml
|
||||||
import json
|
import json
|
||||||
@@ -9,30 +9,26 @@ router = APIRouter()
|
|||||||
def fetch_k8s_data():
|
def fetch_k8s_data():
|
||||||
config.load_incluster_config()
|
config.load_incluster_config()
|
||||||
v1 = client.CoreV1Api()
|
v1 = client.CoreV1Api()
|
||||||
# Nodes
|
nodes = [{
|
||||||
nodes = v1.list_node()
|
|
||||||
node_data = [{
|
|
||||||
"node_name": node.metadata.name,
|
"node_name": node.metadata.name,
|
||||||
"cpu": node.status.capacity.get("cpu"),
|
"cpu": node.status.capacity.get("cpu"),
|
||||||
"memory": node.status.capacity.get("memory"),
|
"memory": node.status.capacity.get("memory"),
|
||||||
"pods_allocatable": node.status.allocatable.get("pods")
|
"pods_allocatable": node.status.allocatable.get("pods"),
|
||||||
} for node in nodes.items]
|
} for node in v1.list_node().items]
|
||||||
|
|
||||||
# Namespaces
|
|
||||||
namespaces = [ns.metadata.name for ns in v1.list_namespace().items]
|
namespaces = [ns.metadata.name for ns in v1.list_namespace().items]
|
||||||
|
return {"nodes": nodes, "namespaces": namespaces}
|
||||||
return {"nodes": node_data, "namespaces": namespaces}
|
|
||||||
|
|
||||||
@router.get("/export")
|
@router.get("/export")
|
||||||
def export_data(format: str = "yaml"):
|
def export_data(format: str = "yaml"):
|
||||||
# Fetch database and Kubernetes data
|
|
||||||
data = {
|
data = {
|
||||||
"metal_nodes": fetch_all("metal_nodes"),
|
"metal_nodes": fetch_all("metal_nodes"),
|
||||||
"virtual_machines": fetch_all("virtual_machines"),
|
"virtual_machines": fetch_all("virtual_machines"),
|
||||||
"kubernetes": fetch_k8s_data(),
|
"kubernetes": fetch_k8s_data(),
|
||||||
}
|
}
|
||||||
|
|
||||||
# Return in the requested format
|
|
||||||
if format.lower() == "yaml":
|
if format.lower() == "yaml":
|
||||||
return yaml.safe_dump(data)
|
yaml_data = yaml.safe_dump(data, sort_keys=False)
|
||||||
|
return Response(content=yaml_data, media_type="text/yaml")
|
||||||
|
|
||||||
return json.dumps(data, indent=2)
|
return json.dumps(data, indent=2)
|
||||||
|
|||||||
Reference in New Issue
Block a user