-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
66 lines (57 loc) · 2.53 KB
/
script.js
File metadata and controls
66 lines (57 loc) · 2.53 KB
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
document.getElementById('fileInput').addEventListener('change', function(event) {
const reader = new FileReader();
reader.onload = function() {
const allYamlDocs = reader.result.split(/\n---\s*\n/);
const k8sObjects = allYamlDocs.map(yamlDoc => yamlDoc.trim() ? jsyaml.load(yamlDoc) : null).filter(obj => obj);
visualizeK8sObjects(k8sObjects);
};
reader.readAsText(event.target.files[0]);
});
function visualizeK8sObjects(objects) {
const architectureDiv = document.getElementById('architecture');
architectureDiv.innerHTML = ''; // Clear previous visualization
objects.forEach(obj => processK8sObject(obj, architectureDiv, objects));
// Call drawDependencies here if implementing connections
}
function processK8sObject(object, container, allObjects) {
if (!object || !object.kind) return;
const element = document.createElement('div');
element.classList.add('k8s-object');
element.setAttribute('data-kind', object.kind);
element.setAttribute('data-name', object.metadata.name);
switch (object.kind) {
case 'Service':
processService(object, element, allObjects);
break;
case 'Deployment':
processDeployment(object, element);
break;
// Add cases for other kinds as needed
}
container.appendChild(element);
}
function processService(service, element, allObjects) {
element.textContent = `Service: ${service.metadata.name}`;
// Logic to find and display related deployments
// This is a placeholder; you'll need to implement matching logic based on selectors, etc.
}
function processDeployment(deployment, element) {
element.textContent = `Deployment: ${deployment.metadata.name}`;
const replicaCount = deployment.spec.replicas || 1;
for (let i = 0; i < replicaCount; i++) {
const pod = document.createElement('div');
pod.classList.add('k8s-pod');
pod.textContent = `Pod ${i + 1} of ${deployment.metadata.name}`;
// Display container names and images
const containers = deployment.spec.template.spec.containers;
containers.forEach(container => {
const containerDiv = document.createElement('div');
containerDiv.classList.add('k8s-container');
containerDiv.textContent = `Container: ${container.name}, Image: ${container.image}`;
pod.appendChild(containerDiv);
});
element.appendChild(pod);
}
}
// ... Add more functions or logic as needed ...
// ... Add CSS for visualization ...