174 lines
5.4 KiB
JavaScript
174 lines
5.4 KiB
JavaScript
// Demo data for testing the Members view without actual cluster data
|
|
window.demoMembersData = {
|
|
members: [
|
|
{
|
|
hostname: "spore-node-1",
|
|
ip: "192.168.1.100",
|
|
lastSeen: Date.now(),
|
|
latency: 3,
|
|
status: "ACTIVE",
|
|
resources: {
|
|
freeHeap: 48748,
|
|
chipId: 12345678,
|
|
sdkVersion: "3.1.2",
|
|
cpuFreqMHz: 80,
|
|
flashChipSize: 1048576
|
|
},
|
|
api: [
|
|
{ uri: "/api/node/status", method: "GET" },
|
|
{ uri: "/api/tasks/status", method: "GET" }
|
|
],
|
|
labels: {
|
|
environment: "production",
|
|
region: "us-west",
|
|
role: "worker",
|
|
cluster: "spore-main"
|
|
}
|
|
},
|
|
{
|
|
hostname: "spore-node-2",
|
|
ip: "192.168.1.101",
|
|
lastSeen: Date.now() - 5000,
|
|
latency: 8,
|
|
status: "ACTIVE",
|
|
resources: {
|
|
freeHeap: 52340,
|
|
chipId: 87654321,
|
|
sdkVersion: "3.1.2",
|
|
cpuFreqMHz: 80,
|
|
flashChipSize: 1048576
|
|
},
|
|
api: [
|
|
{ uri: "/api/node/status", method: "GET" },
|
|
{ uri: "/api/tasks/status", method: "GET" }
|
|
],
|
|
labels: {
|
|
environment: "production",
|
|
region: "us-west",
|
|
role: "controller",
|
|
cluster: "spore-main"
|
|
}
|
|
},
|
|
{
|
|
hostname: "spore-node-3",
|
|
ip: "192.168.1.102",
|
|
lastSeen: Date.now() - 15000,
|
|
latency: 12,
|
|
status: "INACTIVE",
|
|
resources: {
|
|
freeHeap: 38920,
|
|
chipId: 11223344,
|
|
sdkVersion: "3.1.1",
|
|
cpuFreqMHz: 80,
|
|
flashChipSize: 1048576
|
|
},
|
|
api: [
|
|
{ uri: "/api/node/status", method: "GET" }
|
|
],
|
|
labels: {
|
|
environment: "staging",
|
|
region: "us-west",
|
|
role: "worker",
|
|
cluster: "spore-main"
|
|
}
|
|
},
|
|
{
|
|
hostname: "spore-node-4",
|
|
ip: "192.168.1.103",
|
|
lastSeen: Date.now() - 30000,
|
|
latency: 25,
|
|
status: "ACTIVE",
|
|
resources: {
|
|
freeHeap: 45678,
|
|
chipId: 55667788,
|
|
sdkVersion: "3.1.2",
|
|
cpuFreqMHz: 80,
|
|
flashChipSize: 1048576
|
|
},
|
|
api: [
|
|
{ uri: "/api/node/status", method: "GET" },
|
|
{ uri: "/api/tasks/status", method: "GET" },
|
|
{ uri: "/api/capabilities", method: "GET" }
|
|
],
|
|
labels: {
|
|
environment: "production",
|
|
region: "us-east",
|
|
role: "gateway",
|
|
cluster: "spore-main"
|
|
}
|
|
},
|
|
{
|
|
hostname: "spore-node-5",
|
|
ip: "192.168.1.104",
|
|
lastSeen: Date.now() - 60000,
|
|
latency: 45,
|
|
status: "DEAD",
|
|
resources: {
|
|
freeHeap: 0,
|
|
chipId: 99887766,
|
|
sdkVersion: "3.1.0",
|
|
cpuFreqMHz: 0,
|
|
flashChipSize: 1048576
|
|
},
|
|
api: [],
|
|
|
|
}
|
|
]
|
|
};
|
|
|
|
// Mock API client for demo purposes
|
|
window.demoApiClient = {
|
|
async getClusterMembers() {
|
|
// Simulate network delay
|
|
await new Promise(resolve => setTimeout(resolve, 500));
|
|
return window.demoMembersData;
|
|
},
|
|
|
|
async getClusterMembersFromNode(ip) {
|
|
// Simulate network delay
|
|
await new Promise(resolve => setTimeout(resolve, 200));
|
|
|
|
// Return a subset of members to simulate different node perspectives
|
|
const allMembers = window.demoMembersData.members;
|
|
const nodeIndex = allMembers.findIndex(m => m.ip === ip);
|
|
|
|
if (nodeIndex === -1) {
|
|
return { members: [] };
|
|
}
|
|
|
|
// Simulate each node seeing a different subset of the cluster
|
|
const startIndex = (nodeIndex * 2) % allMembers.length;
|
|
const members = [
|
|
allMembers[startIndex],
|
|
allMembers[(startIndex + 1) % allMembers.length],
|
|
allMembers[(startIndex + 2) % allMembers.length]
|
|
];
|
|
|
|
return { members: members.filter(m => m.ip !== ip) };
|
|
},
|
|
|
|
async getNodeStatus(ip) {
|
|
// Simulate network delay
|
|
await new Promise(resolve => setTimeout(resolve, 300));
|
|
|
|
// Find the member by IP
|
|
const member = window.demoMembersData.members.find(m => m.ip === ip);
|
|
if (!member) {
|
|
throw new Error('Node not found');
|
|
}
|
|
|
|
// Return node status with labels
|
|
return {
|
|
...member.resources,
|
|
api: member.api,
|
|
labels: {
|
|
environment: ip.includes('103') ? 'production' : 'production',
|
|
region: ip.includes('103') ? 'us-east' : 'us-west',
|
|
role: ip.includes('101') ? 'controller' : ip.includes('103') ? 'gateway' : 'worker',
|
|
cluster: 'spore-main',
|
|
nodeType: ip.includes('102') ? 'staging' : 'production',
|
|
location: ip.includes('103') ? 'datacenter-2' : 'datacenter-1'
|
|
}
|
|
};
|
|
}
|
|
};
|