v1.3.0: Add multiple vendor parsers and enhanced hardware detection
New parsers: - NVIDIA Field Diagnostics parser with dmidecode output support - NVIDIA Bug Report parser with comprehensive hardware extraction - Supermicro crashdump (CDump.txt) parser - Generic fallback parser for unrecognized text files Enhanced GPU parsing (nvidia-bug-report): - Model and manufacturer detection (NVIDIA H100 80GB HBM3) - UUID, Video BIOS version, IRQ information - Bus location (BDF), DMA size/mask, device minor - PCIe bus type details New hardware detection (nvidia-bug-report): - System Information: server S/N, UUID, manufacturer, product name - CPU: model, S/N, cores, threads, frequencies from dmidecode - Memory: P/N, S/N, manufacturer, speed for all DIMMs - Power Supplies: manufacturer, model, S/N, wattage, status - Network Adapters: Ethernet/InfiniBand controllers with VPD data - Model, P/N, S/N from lspci Vital Product Data - Port count/type detection (QSFP56, OSFP, etc.) - Support for ConnectX-6/7 adapters Archive handling improvements: - Plain .gz file support (not just tar.gz) - Increased size limit for plain gzip files (50MB) - Better error handling for mixed archive formats Web interface enhancements: - Display parser name and filename badges - Improved file info section with visual indicators Co-Authored-By: Claude (qwen3-coder:480b) <noreply@anthropic.com>
This commit is contained in:
@@ -130,6 +130,46 @@ main {
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
/* File Info */
|
||||
.file-info {
|
||||
background: #fff;
|
||||
border: 1px solid #e0e0e0;
|
||||
border-radius: 8px;
|
||||
padding: 1rem 1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.parser-badge, .file-name {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.badge-label {
|
||||
font-size: 0.875rem;
|
||||
color: #666;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.badge-value {
|
||||
font-size: 0.875rem;
|
||||
color: #2c3e50;
|
||||
font-weight: 600;
|
||||
background: #e3f2fd;
|
||||
padding: 0.25rem 0.75rem;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #90caf9;
|
||||
}
|
||||
|
||||
.parser-badge .badge-value {
|
||||
background: #e8f5e9;
|
||||
border-color: #81c784;
|
||||
}
|
||||
|
||||
/* Tabs */
|
||||
.tabs {
|
||||
display: flex;
|
||||
|
||||
@@ -80,7 +80,7 @@ async function uploadFile(file) {
|
||||
status.innerHTML = `<strong>${escapeHtml(result.vendor)}</strong><br>` +
|
||||
`${result.stats.sensors} сенсоров, ${result.stats.fru} компонентов, ${result.stats.events} событий`;
|
||||
status.className = 'success';
|
||||
loadData(result.vendor);
|
||||
loadData(result.vendor, result.filename);
|
||||
} else {
|
||||
status.textContent = result.error || 'Ошибка загрузки';
|
||||
status.className = 'error';
|
||||
@@ -124,13 +124,23 @@ let allSerials = [];
|
||||
let currentVendor = '';
|
||||
|
||||
// Load data from API
|
||||
async function loadData(vendor) {
|
||||
async function loadData(vendor, filename) {
|
||||
currentVendor = vendor || '';
|
||||
document.getElementById('upload-section').classList.add('hidden');
|
||||
document.getElementById('data-section').classList.remove('hidden');
|
||||
document.getElementById('clear-btn').classList.remove('hidden');
|
||||
|
||||
// Update vendor badge if exists
|
||||
// Update parser name and filename
|
||||
const parserName = document.getElementById('parser-name');
|
||||
const fileNameElem = document.getElementById('file-name');
|
||||
if (parserName && currentVendor) {
|
||||
parserName.textContent = currentVendor;
|
||||
}
|
||||
if (fileNameElem && filename) {
|
||||
fileNameElem.textContent = filename;
|
||||
}
|
||||
|
||||
// Update vendor badge if exists (legacy support)
|
||||
const vendorBadge = document.getElementById('vendor-badge');
|
||||
if (vendorBadge && currentVendor) {
|
||||
vendorBadge.textContent = currentVendor;
|
||||
|
||||
@@ -25,6 +25,17 @@
|
||||
</section>
|
||||
|
||||
<section id="data-section" class="hidden">
|
||||
<div class="file-info">
|
||||
<div class="parser-badge">
|
||||
<span class="badge-label">Парсер:</span>
|
||||
<span id="parser-name" class="badge-value"></span>
|
||||
</div>
|
||||
<div class="file-name">
|
||||
<span class="badge-label">Файл:</span>
|
||||
<span id="file-name" class="badge-value"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="tabs">
|
||||
<button class="tab active" data-tab="config">Конфигурация</button>
|
||||
<button class="tab" data-tab="firmware">Прошивки</button>
|
||||
|
||||
Reference in New Issue
Block a user