@@ -6,10 +6,13 @@ package dl
6
6
7
7
import (
8
8
"context"
9
+ "encoding/json"
10
+ "errors"
9
11
"fmt"
10
12
11
13
"github.com/elastic/fleet-server/v7/internal/pkg/bulk"
12
14
"github.com/elastic/fleet-server/v7/internal/pkg/dsl"
15
+ "github.com/elastic/fleet-server/v7/internal/pkg/es"
13
16
"github.com/elastic/fleet-server/v7/internal/pkg/model"
14
17
)
15
18
@@ -39,6 +42,29 @@ func prepareAgentFindByField(field string) *dsl.Tmpl {
39
42
return prepareFindByField (field , map [string ]interface {}{"version" : true })
40
43
}
41
44
45
+ func GetAgent (ctx context.Context , bulker bulk.Bulk , agentID string , opt ... Option ) (model.Agent , error ) {
46
+ o := newOption (FleetAgents , opt ... )
47
+ var agent model.Agent
48
+ data , err := bulker .ReadRaw (ctx , o .indexName , agentID )
49
+ if err != nil {
50
+ if errors .Is (err , es .ErrElasticNotFound ) {
51
+ return model.Agent {}, ErrNotFound
52
+ } else {
53
+ return model.Agent {}, err
54
+ }
55
+ }
56
+ err = json .Unmarshal (data .Source , & agent )
57
+ if err != nil {
58
+ return model.Agent {}, err
59
+ }
60
+
61
+ agent .Id = agentID
62
+ agent .SeqNo = data .SeqNo
63
+ agent .Version = data .Version
64
+
65
+ return agent , err
66
+ }
67
+
42
68
func FindAgent (ctx context.Context , bulker bulk.Bulk , tmpl * dsl.Tmpl , name string , v interface {}, opt ... Option ) (model.Agent , error ) {
43
69
o := newOption (FleetAgents , opt ... )
44
70
res , err := SearchWithOneParam (ctx , bulker , tmpl , o .indexName , name , v )
0 commit comments