Skip placeholder firmware versions in API output
This commit is contained in:
@@ -13,12 +13,12 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"sync/atomic"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.mchus.pro/mchus/logpile/internal/collector"
|
"git.mchus.pro/mchus/logpile/internal/collector"
|
||||||
@@ -717,6 +717,19 @@ func hasUsableSerial(serial string) bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func hasUsableFirmwareVersion(version string) bool {
|
||||||
|
v := strings.TrimSpace(version)
|
||||||
|
if v == "" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
switch strings.ToUpper(v) {
|
||||||
|
case "N/A", "NA", "NONE", "NULL", "UNKNOWN", "-":
|
||||||
|
return false
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Server) handleGetFirmware(w http.ResponseWriter, r *http.Request) {
|
func (s *Server) handleGetFirmware(w http.ResponseWriter, r *http.Request) {
|
||||||
result := s.GetResult()
|
result := s.GetResult()
|
||||||
if result == nil || result.Hardware == nil {
|
if result == nil || result.Hardware == nil {
|
||||||
@@ -944,7 +957,7 @@ func buildFirmwareEntries(hw *models.HardwareConfig) []firmwareEntry {
|
|||||||
component = strings.TrimSpace(component)
|
component = strings.TrimSpace(component)
|
||||||
model = strings.TrimSpace(model)
|
model = strings.TrimSpace(model)
|
||||||
version = strings.TrimSpace(version)
|
version = strings.TrimSpace(version)
|
||||||
if component == "" || version == "" {
|
if component == "" || !hasUsableFirmwareVersion(version) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if model == "" {
|
if model == "" {
|
||||||
@@ -1992,14 +2005,14 @@ func applyCollectSourceMetadata(result *models.AnalysisResult, req CollectReques
|
|||||||
|
|
||||||
func toCollectorRequest(req CollectRequest) collector.Request {
|
func toCollectorRequest(req CollectRequest) collector.Request {
|
||||||
return collector.Request{
|
return collector.Request{
|
||||||
Host: req.Host,
|
Host: req.Host,
|
||||||
Protocol: req.Protocol,
|
Protocol: req.Protocol,
|
||||||
Port: req.Port,
|
Port: req.Port,
|
||||||
Username: req.Username,
|
Username: req.Username,
|
||||||
AuthType: req.AuthType,
|
AuthType: req.AuthType,
|
||||||
Password: req.Password,
|
Password: req.Password,
|
||||||
Token: req.Token,
|
Token: req.Token,
|
||||||
TLSMode: req.TLSMode,
|
TLSMode: req.TLSMode,
|
||||||
PowerOnIfHostOff: req.PowerOnIfHostOff,
|
PowerOnIfHostOff: req.PowerOnIfHostOff,
|
||||||
StopHostAfterCollect: req.StopHostAfterCollect,
|
StopHostAfterCollect: req.StopHostAfterCollect,
|
||||||
DebugPayloads: req.DebugPayloads,
|
DebugPayloads: req.DebugPayloads,
|
||||||
|
|||||||
@@ -62,3 +62,22 @@ func TestBuildFirmwareEntries_IncludesGPUFirmwareFallback(t *testing.T) {
|
|||||||
t.Fatalf("expected GPU firmware entry from hardware.gpus fallback")
|
t.Fatalf("expected GPU firmware entry from hardware.gpus fallback")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBuildFirmwareEntries_SkipsPlaceholderVersions(t *testing.T) {
|
||||||
|
hw := &models.HardwareConfig{
|
||||||
|
Firmware: []models.FirmwareInfo{
|
||||||
|
{DeviceName: "BMC", Version: "3.13.42P13"},
|
||||||
|
{DeviceName: "Front_BP_1", Version: "NA"},
|
||||||
|
{DeviceName: "Rear_BP_0", Version: "N/A"},
|
||||||
|
{DeviceName: "HDD_BP", Version: "-"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
entries := buildFirmwareEntries(hw)
|
||||||
|
if len(entries) != 1 {
|
||||||
|
t.Fatalf("expected only usable firmware entries, got %#v", entries)
|
||||||
|
}
|
||||||
|
if entries[0].Component != "BMC" || entries[0].Version != "3.13.42P13" {
|
||||||
|
t.Fatalf("unexpected remaining firmware entry: %#v", entries[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user