func()

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
}