code: func NewAgentPool(cfg AgentPoolConfig) (*AgentPool, error) {
  	if err := cfg.CheckAndSetDefaults(); err != nil {
  		return nil, trace.Wrap(err)
  	}
  	ctx, cancel := context.WithCancel(cfg.Context)
  	pool := &AgentPool{
  		agents:     make(map[agentKey][]*Agent),
  		cfg:        cfg,
  		ctx:        ctx,
  		cancel:     cancel,
  		discoveryC: make(chan *discoveryRequest),
  	}
  	pool.Entry = log.WithFields(log.Fields{
  		trace.Component: teleport.ComponentReverseTunnelAgent,
  		trace.ComponentFields: log.Fields{
  			"cluster": cfg.Cluster,
  		},
  	})
  	return pool, nil
  }
docs: // NewAgentPool returns new isntance of the agent pool