in pkg/apmclient/client.go [63:93]
func (c *Client) GetElasticCloudAPMInput(ctx context.Context) (gjson.Result, error) {
size := 1
resp, err := c.es.Search().Index(".fleet-policies").Request(&search.Request{
Size: &size,
Sort: []types.SortCombinations{types.SortOptions{
SortOptions: map[string]types.FieldSort{
"revision_idx": {
Order: &sortorder.Desc,
},
},
}},
Query: &types.Query{
Term: map[string]types.TermQuery{
"policy_id": {
Value: "policy-elastic-agent-on-cloud",
},
},
},
}).Do(ctx)
if err != nil {
return gjson.Result{}, fmt.Errorf("error searching .fleet-policies: %w", err)
}
if n := len(resp.Hits.Hits); n != 1 {
return gjson.Result{}, fmt.Errorf("expected 1 policy, got %d", n)
}
result := gjson.GetBytes(resp.Hits.Hits[0].Source_, `data.inputs.#(id=="elastic-cloud-apm")`)
if !result.Exists() {
return gjson.Result{}, fmt.Errorf("input %q missing", "elastic-cloud-apm")
}
return result, nil
}