Use RemoteAgentConfig when registering remote agents

This commit is contained in:
JBD
2026-01-26 17:37:32 -08:00
parent 1704afbd54
commit 9ab7ed4daf
3 changed files with 21 additions and 19 deletions
+1 -7
View File
@@ -98,13 +98,7 @@ func newControllerFromConfig(ctx context.Context, cfg *config.Config) (*controll
// Register remote agents from config
for _, agentCfg := range cfg.RemoteAgents {
if err := c.Registry().RegisterRemote(
agentCfg.ID,
agentCfg.Name,
agentCfg.Description,
agentCfg.Address,
agentCfg.Metadata,
); err != nil {
if err := c.Registry().RegisterRemote(agentCfg); err != nil {
return nil, fmt.Errorf("failed to register remote agent %s: %w", agentCfg.ID, err)
}
}
+12 -11
View File
@@ -7,6 +7,7 @@ import (
"time"
"github.com/google/gar/agent"
"github.com/google/gar/internal/config"
)
// AgentType represents the type of agent (local or remote).
@@ -84,18 +85,18 @@ func (r *Registry) RegisterLocal(a agent.Agent, name, description string, metada
}
// RegisterRemote registers a remote agent by creating a remote agent client.
func (r *Registry) RegisterRemote(id, name, description, address string, metadata map[string]string) error {
func (r *Registry) RegisterRemote(cfg config.RemoteAgentConfig) error {
r.mu.Lock()
defer r.mu.Unlock()
if _, exists := r.agents[id]; exists {
return fmt.Errorf("agent %s already registered", id)
if _, exists := r.agents[cfg.ID]; exists {
return fmt.Errorf("agent %s already registered", cfg.ID)
}
// Create remote agent client
remoteAgent, err := agent.NewRemoteAgent(agent.RemoteAgentConfig{
ID: id,
Address: address,
ID: cfg.ID,
Address: cfg.Address,
Reconnect: true,
MaxRetries: 3,
})
@@ -103,15 +104,15 @@ func (r *Registry) RegisterRemote(id, name, description, address string, metadat
return fmt.Errorf("failed to create remote agent: %w", err)
}
r.agents[id] = remoteAgent
r.agentInfo[id] = &AgentInfo{
ID: id,
Name: name,
Description: description,
r.agents[cfg.ID] = remoteAgent
r.agentInfo[cfg.ID] = &AgentInfo{
ID: cfg.ID,
Name: cfg.Name,
Description: cfg.Description,
Type: AgentTypeRemote,
Healthy: false, // Will be checked by health monitor
LastHealthCheck: time.Time{},
Metadata: metadata,
Metadata: cfg.Metadata,
}
return nil
+8 -1
View File
@@ -11,6 +11,7 @@ import (
"google.golang.org/grpc"
"google.golang.org/protobuf/types/known/timestamppb"
"github.com/google/gar/internal/config"
"github.com/google/gar/internal/controller"
"github.com/google/gar/proto"
)
@@ -104,7 +105,13 @@ func (s *Server) RegisterAgent(ctx context.Context, req *proto.RegisterAgentRequ
registry := s.controller.Registry()
// All registered agents are remote
err := registry.RegisterRemote(req.AgentId, req.Name, req.Description, req.Address, req.Metadata)
err := registry.RegisterRemote(config.RemoteAgentConfig{
ID: req.AgentId,
Name: req.Name,
Description: req.Description,
Address: req.Address,
Metadata: req.Metadata,
})
if err != nil {
return nil, fmt.Errorf("failed to register agent: %w", err)
}