Skip to content

Commit 022b95b

Browse files
committed
add filecontroller
1 parent 70281d9 commit 022b95b

File tree

6 files changed

+125
-78
lines changed

6 files changed

+125
-78
lines changed

app/components/Inspect.jsx

Lines changed: 0 additions & 71 deletions
This file was deleted.

chronos_npm_package/server/kuberControllers.js

Lines changed: 120 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const k8s = require('@kubernetes/client-node');
22
const kuberControllers = {};
33

4-
kuberControllers.getData = async (req, res, next) => {
4+
kuberControllers.getPods = async (req, res, next) => {
55
try {
66
const kc = new k8s.KubeConfig();
77
kc.loadFromDefault();
@@ -11,7 +11,10 @@ kuberControllers.getData = async (req, res, next) => {
1111
const main = async () => {
1212
try {
1313
const podRes = await k8sApi.listNamespacedPod('default');
14-
console.log('Pod: ', podRes.body);
14+
//console.log('Pods: ', podRes.body.items[0]);
15+
for (let i = 0; i < podRes.body.items.length; i++) {
16+
console.log('Pod: ', podRes.body.items[i].metadata.name);
17+
}
1518
} catch (err) {
1619
console.error(err);
1720
}
@@ -23,4 +26,119 @@ kuberControllers.getData = async (req, res, next) => {
2326
}
2427
}
2528

29+
kuberControllers.getNamespace = async (req, res, next) => {
30+
try {
31+
const kc = new k8s.KubeConfig();
32+
kc.loadFromDefault();
33+
34+
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
35+
36+
// const namespace = {
37+
// metadata: {
38+
// name: 'test',
39+
// },
40+
// };
41+
42+
const main = async () => {
43+
try {
44+
// const createNamespaceRes = await k8sApi.createNamespace(namespace);
45+
// console.log('New namespace created: ', createNamespaceRes.body);
46+
47+
const readNamespaceRes = await k8sApi.readNamespace(namespace.metadata.name);
48+
console.log('Namespcace: ', readNamespaceRes.body);
49+
50+
} catch (err) {
51+
console.error(err);
52+
}
53+
};
54+
55+
main();
56+
} catch (err) {
57+
return next(err);
58+
}
59+
}
60+
61+
kuberControllers.getResources = async (req, res, next) => {
62+
63+
try {
64+
const kc = new k8s.KubeConfig();
65+
kc.loadFromDefault();
66+
67+
const appsV1Api = kc.makeApiClient(k8s.AppsV1Api);
68+
const coreV1Api = kc.makeApiClient(k8s.CoreV1Api);
69+
70+
const deploymentsRes = await appsV1Api.listNamespacedDeployment('default');
71+
//console.log('Deployments: ', deploymentsRes.body.items);
72+
73+
let deployments = [];
74+
for (const deployment of deploymentsRes.body.items) {
75+
//console.log('Deployment: ', deployment);
76+
//console.log(deployment.spec.selector.matchLabels.app)
77+
deployments.push({
78+
name: deployment.metadata.name,
79+
status: deployment.status.conditions[0].status,
80+
image: deployment.spec.template.spec.containers[0].image,
81+
ports: [],
82+
services: {},
83+
app: deployment.spec.selector.matchLabels.app,
84+
});
85+
}
86+
87+
// console.log('Deployments: ', deployments);
88+
89+
const servicesRes = await coreV1Api.listNamespacedService('default');
90+
91+
for (const service of servicesRes.body.items) {
92+
console.log('Service: ', service);
93+
// if (service.spec.selector && service.spec.selector.role && roles.includes(service.spec.selector.role)) {
94+
// let filteredDeployments = deployments.filter(d => {
95+
// return d.role === service.spec.selector.role;
96+
// });
97+
// if (filteredDeployments) {
98+
99+
for (const d of deployments) {
100+
if (d.app === service.spec.selector?.app) {
101+
d.ports.push(service.spec.ports[0].port);
102+
d.services[service.metadata.name] = [];
103+
104+
const podRes = await coreV1Api.listNamespacedPod('default');
105+
for (let pod of podRes.body.items) {
106+
//console.log('Pod: ', pod);
107+
if (pod.metadata.labels.app === d.app) {
108+
d.services[service.metadata.name].push(pod.metadata.name);
109+
}
110+
}
111+
112+
}
113+
114+
}
115+
116+
// const podRes = await coreV1Api.listNamespacedPod('default');
117+
// //console.log('Pods: ', podRes.body.items[0]);
118+
// for (let pod of podRes.body.items) {
119+
// //console.log('Pod: ', pod);
120+
// for (let d of deployments) {
121+
// if (pod.metadata.labels.app === d.app) {
122+
// d.services[service.metadata.name].push(pod.metadata.name);
123+
// }
124+
// }
125+
// }
126+
127+
// }
128+
// }
129+
130+
131+
}
132+
console.log('final deployments: ', deployments);
133+
for (let d of deployments) {
134+
console.log('pods: ', d.services);
135+
}
136+
137+
138+
} catch (err) {
139+
console.log('Error: ', err)
140+
return next(err);
141+
}
142+
}
143+
26144
module.exports = kuberControllers;

chronos_npm_package/server/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"main": "server.js",
66
"scripts": {
77
"test": "echo \"Error: no test specified\" && exit 1",
8-
"start": "node server.js"
8+
"start": "nodemon server.js"
99
},
1010
"author": "",
1111
"license": "ISC",
@@ -14,4 +14,4 @@
1414
"cors": "^2.8.5",
1515
"express": "^4.18.2"
1616
}
17-
}
17+
}

chronos_npm_package/server/server.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ app.get('/api/data', async (req, res) => {
4545
});
4646

4747

48-
app.get('/api/getData', kuberControllers.getData, (req, res) => {
48+
app.get('/api/getData', kuberControllers.getResources, (req, res) => {
4949
console.log('getData endpoint hit');
5050
return res.status(200).send('getData endpoint hit');
5151
});
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
kubectl apply -f ../launch/clusterRole.yml
22
kubectl apply -f ../launch/promConfig.yml
33
kubectl apply -f ../launch/prometheus.yml
4-
sleep 2
4+
sleep 4
55
kubectl apply -f ../launch/backend.yml
66
kubectl apply -f ../launch/frontend.yml

examples/kubernetes/server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "0.0.0",
44
"private": true,
55
"scripts": {
6-
"start": "node app.js"
6+
"start": "nodemon app.js"
77
},
88
"dependencies": {
99
"@chronosmicro/tracker": "file:./chronos_npm_package",

0 commit comments

Comments
 (0)