in systemtest/cmd/runapm/main.go [89:170]
func Main() error {
flag.Parse()
log.Println("Initialising Fleet")
if err := systemtest.Fleet.Setup(); err != nil {
log.Fatal(err)
}
if force {
agentPolicies, err := systemtest.Fleet.AgentPolicies("ingest-agent-policies.name:" + policyName)
if err != nil {
return err
}
if len(agentPolicies) > 0 {
log.Printf("Deleting existing agent policy")
agentPolicyIDs := make([]string, len(agentPolicies))
for i, agentPolicy := range agentPolicies {
agentPolicyIDs[i] = agentPolicy.ID
}
if err := systemtest.DestroyAgentPolicy(agentPolicyIDs...); err != nil {
return err
}
}
}
if err := systemtest.InitFleetPackage(); err != nil {
return err
}
if initOnly {
return nil
}
log.Println("Creating Elastic Agent policy")
agentPolicy, key, err := systemtest.Fleet.CreateAgentPolicy(policyName, namespace, policyDescription)
if err != nil {
return err
}
packagePolicy := systemtest.NewPackagePolicy(agentPolicy, vars, nil)
if err := systemtest.Fleet.CreatePackagePolicy(packagePolicy); err != nil {
return err
}
reap := !keep || !background
if reap {
defer func() {
log.Println("Destroying agent policy")
if err := systemtest.DestroyAgentPolicy(agentPolicy.ID); err != nil {
log.Fatal(err)
}
}()
}
log.Println("Creating Elastic Agent container")
agent, err := systemtest.NewUnstartedElasticAgentContainer(systemtest.ContainerConfig{
Name: containerName, Arch: arch,
})
if err != nil {
return err
}
agent.Reap = !keep
agent.FleetEnrollmentToken = key.APIKey
if reap {
defer func() {
log.Println("Terminating agent")
agent.Close()
}()
}
agent.ExposedPorts = []string{"8200"}
agent.WaitingFor = wait.ForHTTP("/").WithPort("8200/tcp").WithStartupTimeout(5 * time.Minute)
agent.Stdout = os.Stdout
agent.Stderr = os.Stderr
if err := agent.Start(); err != nil {
return err
}
serverURL := &url.URL{Scheme: "http", Host: agent.Addrs["8200"]}
log.Printf("Elastic Agent container started")
log.Printf(" - APM Server listening on %s", serverURL)
if background {
return nil
}
_, err = agent.Wait(context.Background())
return err
}