website-builder-backend / frontend /scripts /25_kubernetes_workspace.sh
David Prince
fix: add all missing local module stubs (remote_mcp_registry, mcp_auth, mcp_transport, etc)
cce8120
Raw
History Blame Contribute Delete
3 kB
#!/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."