Add iDRAC Console wall, power control, and proxy embeds.

Operators can power nodes via OME jobs and view multiple live iDRAC
consoles in-panel (4/8 wall) through a same-origin reverse proxy;
Present decks updated for the new remote-ops story.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
root
2026-07-19 00:16:19 +02:00
parent 795707e47b
commit 03e207b46d
9 changed files with 2066 additions and 31 deletions
+84 -3
View File
@@ -7,7 +7,7 @@
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="/styles.css?v=radar1" />
<link rel="stylesheet" href="/styles.css?v=console2" />
<link rel="icon" href="/dell.png" type="image/png" />
<link rel="stylesheet" href="/vendor/xterm/xterm.css?v=home1" />
<script>
@@ -39,6 +39,7 @@
<button type="button" class="btn ghost" id="btn-reset-view" title="Fit fleet in view">Reset view</button>
<button type="button" class="btn ghost" id="btn-ome-console" title="Open OME console">OME console</button>
<button type="button" class="btn ghost" id="btn-network" title="Fabric map &amp; ATC racks">Network</button>
<button type="button" class="btn console-btn" id="btn-console" title="Live iDRAC console wall">Console</button>
<button type="button" class="btn ghost" id="btn-reports" title="Fleet reports &amp; Dell compliance">Reports</button>
<button type="button" class="btn ghost" id="btn-ops" title="ATC admin tickets">Ops desk</button>
<button type="button" class="btn present-btn" id="btn-present" title="Customer presentation · mid or fullscreen slides">Present</button>
@@ -419,6 +420,63 @@
<footer class="drawer-credit">OME Cockpit · Data Forward Deployed Engineers <strong>Mohamed El Kadi</strong> &amp; <strong>Bart Sjerps</strong> · Not an official Dell Technologies product</footer>
</div>
<!-- Live iDRAC Console wall -->
<div class="drawer wide console-drawer" id="console-drawer" aria-hidden="true">
<div class="console-aurora" aria-hidden="true"></div>
<div class="drawer-head console-head">
<div class="drawer-brand">
<img src="/dell.png" alt="Dell" height="22" />
<div>
<span class="console-title">Console · iDRAC wall</span>
<p class="console-sub">4 live embeds · drag from fleet · network-aware</p>
</div>
</div>
<div class="console-head-actions">
<div id="console-stats" class="console-stats"></div>
<div class="console-density" role="group" aria-label="Wall size">
<button type="button" class="chip active" data-console-slots="4" title="4 consoles">4 screens</button>
<button type="button" class="chip" data-console-slots="8" title="8 consoles">8 screens</button>
</div>
<div class="console-density" role="group" aria-label="Tile density">
<button type="button" class="chip" data-console-density="small" title="Compact tiles">Small</button>
<button type="button" class="chip active" data-console-density="medium" title="Larger tiles">Medium</button>
</div>
<button type="button" class="btn primary" id="btn-console-autofill" title="Fill wall with live iDRACs">Auto-fill live</button>
<button type="button" class="btn ghost" id="btn-console-clear">Clear wall</button>
<button type="button" class="btn ghost" id="btn-console-close">Close</button>
</div>
</div>
<div class="console-body">
<aside class="console-fleet">
<div class="console-fleet-tools">
<input type="search" id="console-search" placeholder="Search name, IP, tag, subnet…" autocomplete="off" />
<div class="console-subnet-chips" id="console-subnet-chips"></div>
<p class="hint">Only real iDRAC/BMC IPs · drag onto a slot or click <strong>+ Wall</strong> · Fullscreen = popup</p>
</div>
<div class="console-fleet-list" id="console-fleet-list"></div>
</aside>
<section class="console-stage density-medium" id="console-stage" aria-label="iDRAC console wall"></section>
</div>
<footer class="drawer-credit">OME Cockpit · Data Forward Deployed Engineers <strong>Mohamed El Kadi</strong> &amp; <strong>Bart Sjerps</strong> · Not an official Dell Technologies product</footer>
</div>
<div class="modal hidden console-fs-modal" id="console-fs-modal" aria-hidden="true" role="dialog" aria-labelledby="console-fs-title">
<div class="modal-card console-fs-card">
<button type="button" class="modal-close" id="btn-console-fs-close" aria-label="Close">×</button>
<div class="console-fs-head">
<div>
<p class="modal-kicker">Fullscreen iDRAC</p>
<h2 id="console-fs-title">Console</h2>
<p class="modal-sub" id="console-fs-sub"></p>
<div id="console-fs-net"></div>
</div>
</div>
<div class="console-fs-frame-wrap">
<iframe id="console-fs-frame" title="iDRAC fullscreen" allow="fullscreen; clipboard-read; clipboard-write"></iframe>
</div>
</div>
</div>
<!-- Reports / compliance / export -->
<div class="drawer wide reports-drawer" id="reports-drawer" aria-hidden="true">
<div class="drawer-head">
@@ -592,6 +650,28 @@
</div>
</div>
<div class="modal hidden" id="idrac-console-modal" aria-hidden="true" role="dialog" aria-labelledby="idrac-console-title">
<div class="modal-card idrac-console-card">
<button type="button" class="modal-close" id="btn-idrac-console-close" aria-label="Close">×</button>
<div class="modal-brand">
<img src="/dell.png" alt="Dell" width="36" height="36" />
<div>
<p class="modal-kicker">iDRAC console</p>
<h2 id="idrac-console-title">Console</h2>
<p class="modal-sub" id="idrac-console-sub"></p>
</div>
</div>
<div class="idrac-console-toolbar">
<button type="button" class="btn primary" id="btn-idrac-popout">Open popout</button>
<button type="button" class="btn ghost" id="btn-idrac-web">iDRAC Web</button>
<button type="button" class="btn ghost" id="btn-idrac-reload">Reload embed</button>
</div>
<p class="hint" id="idrac-console-note"></p>
<div class="idrac-console-frame-wrap">
<iframe id="idrac-console-frame" title="iDRAC console" allow="fullscreen; clipboard-read; clipboard-write" referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
</div>
</div>
<div class="modal hidden" id="ssh-modal" aria-hidden="true" role="dialog" aria-labelledby="ssh-device">
@@ -634,12 +714,13 @@
<script src="/vendor/xterm/xterm.min.js?v=home1"></script>
<script src="/vendor/xterm/xterm-addon-fit.min.js?v=home1"></script>
<script src="/app.js?v=radar1"></script>
<script src="/app.js?v=power4"></script>
<script src="/ops.js?v=opsfde2"></script>
<script src="/ssh.js?v=fabric4"></script>
<script src="/rdp.js?v=fabric4"></script>
<script src="/reports.js?v=anctx1"></script>
<script src="/network.js?v=vlanall1"></script>
<script src="/present.js?v=present16"></script>
<script src="/console.js?v=console2"></script>
<script src="/present.js?v=present17"></script>
</body>
</html>