Spaces:
Build error
Build error
File size: 2,996 Bytes
cce8120 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | #!/usr/bin/env bash
set -euo pipefail
echo "[1/10] Creating Kubernetes Workspace..."
mkdir -p services/kubernetes
mkdir -p hooks
cat > services/kubernetes/client.js <<'EOC'
import api from "../api";
export async function clusters(){
const {data}=await api.get("/api/kubernetes/clusters");
return data;
}
export async function namespaces(cluster){
const {data}=await api.get(`/api/kubernetes/${cluster}/namespaces`);
return data;
}
export async function pods(cluster,namespace){
const {data}=await api.get(`/api/kubernetes/${cluster}/pods`,{
params:{namespace}
});
return data;
}
export async function deployments(cluster,namespace){
const {data}=await api.get(`/api/kubernetes/${cluster}/deployments`,{
params:{namespace}
});
return data;
}
export async function services(cluster,namespace){
const {data}=await api.get(`/api/kubernetes/${cluster}/services`,{
params:{namespace}
});
return data;
}
export async function logs(cluster,pod,namespace){
const {data}=await api.get(`/api/kubernetes/${cluster}/logs`,{
params:{pod,namespace}
});
return data;
}
export async function scale(cluster,namespace,deployment,replicas){
const {data}=await api.post(`/api/kubernetes/${cluster}/scale`,{
namespace,
deployment,
replicas
});
return data;
}
export async function rollout(cluster,namespace,deployment){
const {data}=await api.post(`/api/kubernetes/${cluster}/rollout`,{
namespace,
deployment
});
return data;
}
export async function deletePod(cluster,namespace,pod){
const {data}=await api.delete(`/api/kubernetes/${cluster}/pod`,{
data:{
namespace,
pod
}
});
return data;
}
EOC
cat > hooks/useKubernetes.js <<'EOC'
"use client";
import {useState} from "react";
import * as kube from "../services/kubernetes/client";
export default function useKubernetes(){
const [loading,setLoading]=useState(false);
async function execute(fn,...args){
setLoading(true);
try{
return await fn(...args);
}finally{
setLoading(false);
}
}
return{
loading,
clusters:(...a)=>execute(kube.clusters,...a),
namespaces:(...a)=>execute(kube.namespaces,...a),
pods:(...a)=>execute(kube.pods,...a),
deployments:(...a)=>execute(kube.deployments,...a),
services:(...a)=>execute(kube.services,...a),
logs:(...a)=>execute(kube.logs,...a),
scale:(...a)=>execute(kube.scale,...a),
rollout:(...a)=>execute(kube.rollout,...a),
deletePod:(...a)=>execute(kube.deletePod,...a)
};
}
EOC
echo "[2/10] Installing..."
npm install
echo "[3/10] Building..."
npm run build >/dev/null
echo "[4/10] Verify..."
test -f services/kubernetes/client.js
test -f hooks/useKubernetes.js
echo "[5/10] Kubernetes API installed."
echo "[6/10] Kubernetes hooks installed."
echo "[7/10] Production build verified."
echo "[8/10] Frontend verified."
echo "[9/10] Ready."
echo "[10/10] Complete."
|