MCPcopy
hub / github.com/yusing/godoxy / verifyStartNewAgent

Function verifyStartNewAgent

internal/api/v1/agent/verify.go:227–272  ·  view source on GitHub ↗
(ctx context.Context, host string, ca agent.PEMPair, client agent.PEMPair, containerRuntime agent.ContainerRuntime)

Source from the content-addressed store, hash-verified

225}
226
227func verifyStartNewAgent(ctx context.Context, host string, ca agent.PEMPair, client agent.PEMPair, containerRuntime agent.ContainerRuntime) (int, error) {
228 var agentCfg agent.AgentConfig
229 agentCfg.Addr = host
230 agentCfg.Runtime = containerRuntime
231
232 // check if agent host exists in the config
233 cfgState := configtypes.ActiveState.Load()
234 for _, a := range cfgState.Value().Providers.Agents {
235 if a.Addr == host {
236 return 0, errAgentAlreadyExists
237 }
238 }
239 // check if agent host exists in the agent pool
240 if agentpool.Has(&agentCfg) {
241 return 0, errAgentAlreadyExists
242 }
243
244 err := agentCfg.InitWithCerts(ctx, ca.Cert, client.Cert, client.Key)
245 if err != nil {
246 return 0, fmt.Errorf("failed to initialize agent config: %w", err)
247 }
248
249 provider := provider.NewAgentProvider(&agentCfg)
250 if _, loaded := cfgState.LoadOrStoreProvider(provider.String(), provider); loaded {
251 return 0, fmt.Errorf("provider %s already exists", provider.String())
252 }
253
254 // agent must be added before loading routes
255 added := agentpool.Add(&agentCfg)
256 if !added {
257 return 0, errAgentAlreadyExists
258 }
259 err = provider.LoadRoutes()
260 if err != nil {
261 cfgState.DeleteProvider(provider.String())
262 agentpool.Remove(&agentCfg)
263 return 0, fmt.Errorf("failed to load routes: %w", err)
264 }
265
266 err = provider.Start(cfgState.Task())
267 if err != nil {
268 return 0, fmt.Errorf("failed to start routes: %w", err)
269 }
270
271 return provider.NumRoutes(), nil
272}

Callers

nothing calls this directly

Calls 13

InitWithCertsMethod · 0.95
HasFunction · 0.92
AddFunction · 0.92
RemoveFunction · 0.92
LoadMethod · 0.80
ValueMethod · 0.65
LoadOrStoreProviderMethod · 0.65
StringMethod · 0.65
LoadRoutesMethod · 0.65
DeleteProviderMethod · 0.65
StartMethod · 0.65
TaskMethod · 0.65

Tested by

no test coverage detected