mirror of
https://github.com/google/ax.git
synced 2026-10-02 03:14:37 +08:00
Use RemoteAgentConfig when registering remote agents
This commit is contained in:
+1
-7
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user