Files
logpile/internal/parser/vendors
Michael Chus c7422e95aa v1.1.0: Parser versioning, server info, auto-browser, section overviews
- Add parser versioning with Version() method and version display on main screen
- Add server model and serial number to Configuration tab and TXT export
- Add auto-browser opening on startup with --no-browser flag
- Add Restart and Exit buttons with graceful shutdown
- Add section overview stats (CPU, Power, Storage, GPU, Network)
- Change PCIe Link display to "x16 PCIe Gen4" format
- Add Location column to Serials section
- Extract BoardInfo from FRU and PlatformId from ThermalConfig

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 13:49:43 +03:00
..

Vendor Parser Modules

Каждый производитель серверов имеет свой формат диагностических архивов BMC. Эта директория содержит модули парсеров для разных производителей.

Структура модуля

vendors/
├── vendors.go              # Импорты всех модулей (добавьте сюда новый)
├── README.md               # Эта документация
├── template/               # Шаблон для нового модуля
│   └── parser.go.template
├── inspur/                 # Модуль Inspur/Kaytus
│   ├── parser.go           # Основной парсер + регистрация
│   ├── sdr.go              # Парсинг SDR (сенсоры)
│   ├── fru.go              # Парсинг FRU (серийники)
│   ├── asset.go            # Парсинг asset.json
│   └── syslog.go           # Парсинг syslog
├── supermicro/             # Будущий модуль Supermicro
├── dell/                   # Будущий модуль Dell iDRAC
└── hpe/                    # Будущий модуль HPE iLO

Как добавить новый модуль

1. Создайте директорию модуля

mkdir -p internal/parser/vendors/VENDORNAME

2. Скопируйте шаблон

cp internal/parser/vendors/template/parser.go.template \
   internal/parser/vendors/VENDORNAME/parser.go

3. Отредактируйте parser.go

  • Замените VENDORNAME на идентификатор вендора (например, supermicro)
  • Замените VENDOR_DESCRIPTION на описание (например, Supermicro)
  • Реализуйте метод Detect() для определения формата
  • Реализуйте метод Parse() для парсинга данных

4. Зарегистрируйте модуль

Добавьте импорт в vendors/vendors.go:

import (
    _ "git.mchus.pro/mchus/logpile/internal/parser/vendors/inspur"
    _ "git.mchus.pro/mchus/logpile/internal/parser/vendors/VENDORNAME"  // Новый модуль
)

5. Готово!

Модуль автоматически зарегистрируется при старте приложения через init().

Интерфейс VendorParser

type VendorParser interface {
    // Name возвращает человекочитаемое имя парсера
    Name() string

    // Vendor возвращает идентификатор вендора
    Vendor() string

    // Detect проверяет, подходит ли этот парсер для файлов
    // Возвращает уверенность 0-100 (0 = не подходит, 100 = точно этот формат)
    Detect(files []ExtractedFile) int

    // Parse парсит извлеченные файлы
    Parse(files []ExtractedFile) (*models.AnalysisResult, error)
}

Советы по реализации Detect()

  • Ищите уникальные файлы/директории для данного вендора
  • Проверяйте содержимое файлов на характерные маркеры
  • Возвращайте высокий confidence (70+) только при уверенном совпадении
  • Несколько парсеров могут вернуть >0, выбирается с максимальным confidence

Поддерживаемые вендоры

Вендор Идентификатор Статус Протестировано на
Inspur/Kaytus inspur Готов KR4268X2 (onekeylog)
Supermicro supermicro Планируется -
Dell iDRAC dell Планируется -
HPE iLO hpe Планируется -
Lenovo XCC lenovo Планируется -