- identifier-normalization: use strings.EqualFold in h3c/parser.go
- import-export: CSV now uses UTF-8 BOM and semicolon delimiter
- go-code-style: translate all Russian source strings to English (ADL-007)
- go-background-tasks: add Type, Message, Result fields to Job struct
- go-api: wrap list endpoints in {items, total_count, page, per_page, total_pages}
- module-structure: rename helpers.go → context_sleep.go
- build-version-display: htmlError renders version footer on error pages
- go-logging: migrate all log.Printf calls to log/slog with structured attrs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43 lines
1005 B
Go
43 lines
1005 B
Go
package collector
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"git.mchus.pro/mchus/logpile/internal/models"
|
|
)
|
|
|
|
type IPMIMockConnector struct{}
|
|
|
|
func NewIPMIMockConnector() *IPMIMockConnector {
|
|
return &IPMIMockConnector{}
|
|
}
|
|
|
|
func (c *IPMIMockConnector) Protocol() string {
|
|
return "ipmi"
|
|
}
|
|
|
|
func (c *IPMIMockConnector) Collect(ctx context.Context, req Request, emit ProgressFn) (*models.AnalysisResult, error) {
|
|
steps := []Progress{
|
|
{Status: "running", Progress: 20, Message: "IPMI: connecting to BMC..."},
|
|
{Status: "running", Progress: 55, Message: "IPMI: reading inventory..."},
|
|
{Status: "running", Progress: 85, Message: "IPMI: normalizing data..."},
|
|
}
|
|
|
|
for _, step := range steps {
|
|
if !sleepWithContext(ctx, 150*time.Millisecond) {
|
|
return nil, ctx.Err()
|
|
}
|
|
if emit != nil {
|
|
emit(step)
|
|
}
|
|
}
|
|
|
|
return &models.AnalysisResult{
|
|
Events: make([]models.Event, 0),
|
|
FRU: make([]models.FRUInfo, 0),
|
|
Sensors: make([]models.SensorReading, 0),
|
|
Hardware: &models.HardwareConfig{},
|
|
}, nil
|
|
}
|