fix unknow agent
ci-agent / build (push) Failing after 7m40s

This commit is contained in:
d3m0k1d
2026-04-05 08:46:29 +03:00
parent 4a00c95d25
commit eb8aef11a4
@@ -4,6 +4,7 @@ import (
"context"
"fmt"
"log"
"time"
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/proto/proto"
"google.golang.org/grpc/metadata"
@@ -23,6 +24,9 @@ func (c *Collector) ReportServices(ctx context.Context, req *proto.ServicesUpdat
}
agentName := whoamiVals[0]
// Auto-register agent if not yet known (e.g. log stream not connected yet)
c.ensureAgentRegistered(agentName)
services := make([]Service, 0, len(req.Services))
for _, s := range req.Services {
services = append(services, Service{s.Name, s.Status})
@@ -51,6 +55,9 @@ func (c *Collector) ReportSystemMetrics(ctx context.Context, req *proto.SystemMe
}
agentName := whoamiVals[0]
// Auto-register agent if not yet known (e.g. log stream not connected yet)
c.ensureAgentRegistered(agentName)
metrics := SystemMetrics{
CPUPercent: req.CpuPercent,
MemoryPercent: req.MemoryPercent,
@@ -68,3 +75,18 @@ func (c *Collector) ReportSystemMetrics(ctx context.Context, req *proto.SystemMe
return &proto.SystemMetricsResp{}, nil
}
// ensureAgentRegistered registers the agent in the tracker if it's not already there.
// This handles the case where agents send metrics/services before connecting to the log stream.
func (c *Collector) ensureAgentRegistered(agentName string) {
if _, ok := c.tracker.GetAgent(agentName); !ok {
agent := &Agent{
ID: agentName,
Label: agentName,
Services: make([]Service, 0),
ConnectedAt: time.Now(),
}
c.tracker.Register(agent)
log.Printf("Auto-registered agent via unary RPC: %s", agentName)
}
}