yangtb24 commited on
Commit
0111daa
·
verified ·
1 Parent(s): f780f61

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -19
app.py CHANGED
@@ -6,7 +6,6 @@ import json
6
  app = Flask(__name__)
7
 
8
  lightModeStyle = """
9
- /* ... (Your CSS styles, unchanged) ... */
10
  * {
11
  margin: 0;
12
  padding: 0;
@@ -240,6 +239,7 @@ htmlTemplate = f"""
240
  class MetricsManager {{
241
  constructor() {{
242
  this.eventSources = new Map();
 
243
  this.instanceOwners = new Map();
244
  this.spaceIds = new Map();
245
  this.lastData = new Map(); // Store last received data
@@ -287,25 +287,24 @@ htmlTemplate = f"""
287
  }}
288
 
289
  const metricsManager = new MetricsManager();
290
- const servers = new Map(); // instanceId: lastSeen
291
 
292
  async function initialize() {{
293
  const instances = await fetchInstances();
294
  instances.forEach(instance => {{
295
  metricsManager.connect(instance.id, instance.owner);
296
- servers.set(instance.id, 0); // Initialize lastSeen to 0
297
  }});
298
  }}
299
 
300
 
301
  function updateServerCard(data, spaceId) {{
302
- const serverId = data.replica; // "replica" is already unique
303
- const serverElement = document.getElementById(`server-${serverId}`);
304
  const owner = metricsManager.instanceOwners.get(spaceId);
305
 
306
  if (!serverElement) {{
307
  const card = document.createElement('div');
308
- card.id = `server-${serverId}`;
309
  card.className = 'server-card';
310
  card.innerHTML = `
311
  <div class="server-header">
@@ -314,7 +313,7 @@ htmlTemplate = f"""
314
  <svg class="server-flag" width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
315
  <path d="M21 3H3C1.9 3 1 3.9 1 5v3c0 1.1.9 2 2 10h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 5H4V6h16v2zm1 4H3c-1.1 0-2 .9-2 2v3c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2zm-1 5H4v-2h16v2zm1 4H3c-1.1 0-2 .9-2 2v3c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2zm-1 5H4v-2h16v2z"/>
316
  </svg>
317
- <div>${owner}/${spaceId}</div>
318
  </div>
319
  </div>
320
  <div class="metric-grid">
@@ -345,22 +344,22 @@ htmlTemplate = f"""
345
  document.getElementById('servers').appendChild(card);
346
  }}
347
 
348
- const card = document.getElementById(`server-${serverId}`);
349
  const cpuUsage = data.cpu_usage_pct;
350
  const memoryUsage = (data.memory_used_bytes / data.memory_total_bytes) * 100;
351
  const uploadBps = data.tx_bps;
352
  const downloadBps = data.rx_bps;
353
 
354
- card.querySelector('.cpu-usage').textContent = `${cpuUsage.toFixed(2)}%`;
355
- card.querySelector('.cpu-progress-bar').style.width = `${cpuUsage}%`;
356
 
357
- card.querySelector('.memory-usage').textContent = `${memoryUsage.toFixed(2)}%`;
358
- card.querySelector('.memory-progress-bar').style.width = `${memoryUsage}%`;
359
 
360
- card.querySelector('.upload').textContent = `${formatBytes(uploadBps)}/s`;
361
- card.querySelector('.download').textContent = `${formatBytes(downloadBps)}/s`;
362
 
363
- servers.set(spaceId, Date.now()); // Use spaceId, not serverId (which is the replica)
364
  updateSummary();
365
  }}
366
 
@@ -371,16 +370,16 @@ htmlTemplate = f"""
371
  let totalUpload = 0;
372
  let totalDownload = 0;
373
 
374
- servers.forEach((lastSeen, instanceId) => { // Use instanceId here
375
  const isOnline = (now - lastSeen) < 10000;
376
- const serverCard = document.getElementById(`server-${metricsManager.getLastData(instanceId)?.replica}`); // Get replica ID
377
 
378
  if (serverCard) {
379
  const statusDot = serverCard.querySelector('.status-dot');
380
  statusDot.className = `status-dot status-${isOnline ? 'online' : 'offline'}`;
381
 
382
  if (isOnline) {
383
- const lastData = metricsManager.getLastData(instanceId);
384
  if(lastData) {
385
  totalUpload += lastData.tx_bps;
386
  totalDownload += lastData.rx_bps;
@@ -465,7 +464,7 @@ def stream_metrics(username, instance_id):
465
  event_type = line.split(":", 1)[1].strip()
466
  elif line.startswith("data:"):
467
  data_lines.append(line.split(":", 1)[1].strip())
468
-
469
  if event_type == "metric":
470
  yield f"event: {event_type}\ndata: {''.join(data_lines)}\n\n"
471
 
@@ -480,3 +479,4 @@ def stream_metrics(username, instance_id):
480
 
481
  if __name__ == '__main__':
482
  app.run(debug=True, host='0.0.0.0', port=7860)
 
 
6
  app = Flask(__name__)
7
 
8
  lightModeStyle = """
 
9
  * {
10
  margin: 0;
11
  padding: 0;
 
239
  class MetricsManager {{
240
  constructor() {{
241
  this.eventSources = new Map();
242
+ this.servers = new Map();
243
  this.instanceOwners = new Map();
244
  this.spaceIds = new Map();
245
  this.lastData = new Map(); // Store last received data
 
287
  }}
288
 
289
  const metricsManager = new MetricsManager();
290
+ const servers = new Map();
291
 
292
  async function initialize() {{
293
  const instances = await fetchInstances();
294
  instances.forEach(instance => {{
295
  metricsManager.connect(instance.id, instance.owner);
 
296
  }});
297
  }}
298
 
299
 
300
  function updateServerCard(data, spaceId) {{
301
+ const serverId = data.replica;
302
+ const serverElement = document.getElementById(`server-${{serverId}}`);
303
  const owner = metricsManager.instanceOwners.get(spaceId);
304
 
305
  if (!serverElement) {{
306
  const card = document.createElement('div');
307
+ card.id = `server-${{serverId}}`;
308
  card.className = 'server-card';
309
  card.innerHTML = `
310
  <div class="server-header">
 
313
  <svg class="server-flag" width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
314
  <path d="M21 3H3C1.9 3 1 3.9 1 5v3c0 1.1.9 2 2 10h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 5H4V6h16v2zm1 4H3c-1.1 0-2 .9-2 2v3c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2zm-1 5H4v-2h16v2zm1 4H3c-1.1 0-2 .9-2 2v3c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2zm-1 5H4v-2h16v2z"/>
315
  </svg>
316
+ <div>${{serverId}} (${{owner}}/${{spaceId}})</div>
317
  </div>
318
  </div>
319
  <div class="metric-grid">
 
344
  document.getElementById('servers').appendChild(card);
345
  }}
346
 
347
+ const card = document.getElementById(`server-${{serverId}}`);
348
  const cpuUsage = data.cpu_usage_pct;
349
  const memoryUsage = (data.memory_used_bytes / data.memory_total_bytes) * 100;
350
  const uploadBps = data.tx_bps;
351
  const downloadBps = data.rx_bps;
352
 
353
+ card.querySelector('.cpu-usage').textContent = `${{cpuUsage.toFixed(2)}}%`;
354
+ card.querySelector('.cpu-progress-bar').style.width = `${{cpuUsage}}%`;
355
 
356
+ card.querySelector('.memory-usage').textContent = `${{memoryUsage.toFixed(2)}}%`;
357
+ card.querySelector('.memory-progress-bar').style.width = `${{memoryUsage}}%`;
358
 
359
+ card.querySelector('.upload').textContent = `${{formatBytes(uploadBps)}}/s`;
360
+ card.querySelector('.download').textContent = `${{formatBytes(downloadBps)}}/s`;
361
 
362
+ servers.set(serverId, Date.now());
363
  updateSummary();
364
  }}
365
 
 
370
  let totalUpload = 0;
371
  let totalDownload = 0;
372
 
373
+ servers.forEach((lastSeen, serverId) => {
374
  const isOnline = (now - lastSeen) < 10000;
375
+ const serverCard = document.getElementById(`server-${serverId}`);
376
 
377
  if (serverCard) {
378
  const statusDot = serverCard.querySelector('.status-dot');
379
  statusDot.className = `status-dot status-${isOnline ? 'online' : 'offline'}`;
380
 
381
  if (isOnline) {
382
+ const lastData = metricsManager.getLastData(serverId.split(" ")[0]); // Use the correct instanceId
383
  if(lastData) {
384
  totalUpload += lastData.tx_bps;
385
  totalDownload += lastData.rx_bps;
 
464
  event_type = line.split(":", 1)[1].strip()
465
  elif line.startswith("data:"):
466
  data_lines.append(line.split(":", 1)[1].strip())
467
+
468
  if event_type == "metric":
469
  yield f"event: {event_type}\ndata: {''.join(data_lines)}\n\n"
470
 
 
479
 
480
  if __name__ == '__main__':
481
  app.run(debug=True, host='0.0.0.0', port=7860)
482
+