@@ -19,57 +19,68 @@ import (
19
19
"github.com/elastic/elastic-agent/pkg/control/v2/cproto"
20
20
)
21
21
22
- // GetAgentByHostnameFromList get an agent by the local_metadata.host.name property, reading from the agents list
23
- func GetAgentByHostnameFromList (client * kibana.Client , hostname string ) (* kibana.AgentExisting , error ) {
22
+ // GetAgentByPolicyIDAndHostnameFromList get an agent by the local_metadata.host.name property, reading from the agents list
23
+ func GetAgentByPolicyIDAndHostnameFromList (client * kibana.Client , policyID , hostname string ) (* kibana.AgentExisting , error ) {
24
24
listAgentsResp , err := client .ListAgents (context .Background (), kibana.ListAgentsRequest {})
25
25
if err != nil {
26
26
return nil , err
27
27
}
28
28
29
- for _ , item := range listAgentsResp .Items {
29
+ hostnameAgents := make ([]* kibana.AgentExisting , 0 )
30
+ for i , item := range listAgentsResp .Items {
30
31
agentHostname := item .LocalMetadata .Host .Hostname
31
- if agentHostname == hostname {
32
- return & item , nil
32
+ agentPolicyID := item .PolicyID
33
+
34
+ if agentHostname == hostname && agentPolicyID == policyID {
35
+ hostnameAgents = append (hostnameAgents , & listAgentsResp .Items [i ])
33
36
}
34
37
}
35
38
36
- return nil , fmt .Errorf ("unable to find agent with hostname [%s]" , hostname )
39
+ if len (hostnameAgents ) == 0 {
40
+ return nil , fmt .Errorf ("unable to find agent with hostname [%s]" , hostname )
41
+ }
42
+
43
+ if len (hostnameAgents ) > 1 {
44
+ return nil , fmt .Errorf ("found %d agents with hostname [%s]; expected to find only one" , len (hostnameAgents ), hostname )
45
+ }
46
+
47
+ return hostnameAgents [0 ], nil
37
48
}
38
49
39
- func GetAgentStatus (client * kibana.Client ) (string , error ) {
50
+ func GetAgentStatus (client * kibana.Client , policyID string ) (string , error ) {
40
51
hostname , err := os .Hostname ()
41
52
if err != nil {
42
53
return "" , err
43
54
}
44
55
45
- agent , err := GetAgentByHostnameFromList (client , hostname )
56
+ agent , err := GetAgentByPolicyIDAndHostnameFromList (client , policyID , hostname )
46
57
if err != nil {
47
58
return "" , err
48
59
}
49
60
50
61
return agent .Status , nil
51
62
}
52
63
53
- func GetAgentVersion (client * kibana.Client ) (string , error ) {
64
+ func GetAgentVersion (client * kibana.Client , policyID string ) (string , error ) {
54
65
hostname , err := os .Hostname ()
55
66
if err != nil {
56
67
return "" , err
57
68
}
58
69
59
- agent , err := GetAgentByHostnameFromList (client , hostname )
70
+ agent , err := GetAgentByPolicyIDAndHostnameFromList (client , policyID , hostname )
60
71
if err != nil {
61
72
return "" , err
62
73
}
63
74
64
75
return agent .Agent .Version , err
65
76
}
66
77
67
- func UnEnrollAgent (client * kibana.Client ) error {
78
+ func UnEnrollAgent (client * kibana.Client , policyID string ) error {
68
79
hostname , err := os .Hostname ()
69
80
if err != nil {
70
81
return err
71
82
}
72
- agentID , err := GetAgentIDByHostname (client , hostname )
83
+ agentID , err := GetAgentIDByHostname (client , policyID , hostname )
73
84
if err != nil {
74
85
return err
75
86
}
@@ -86,20 +97,20 @@ func UnEnrollAgent(client *kibana.Client) error {
86
97
return nil
87
98
}
88
99
89
- func GetAgentIDByHostname (client * kibana.Client , hostname string ) (string , error ) {
90
- agent , err := GetAgentByHostnameFromList (client , hostname )
100
+ func GetAgentIDByHostname (client * kibana.Client , policyID , hostname string ) (string , error ) {
101
+ agent , err := GetAgentByPolicyIDAndHostnameFromList (client , policyID , hostname )
91
102
if err != nil {
92
103
return "" , err
93
104
}
94
105
return agent .Agent .ID , nil
95
106
}
96
107
97
- func UpgradeAgent (client * kibana.Client , version string ) error {
108
+ func UpgradeAgent (client * kibana.Client , policyID , version string ) error {
98
109
hostname , err := os .Hostname ()
99
110
if err != nil {
100
111
return err
101
112
}
102
- agentID , err := GetAgentIDByHostname (client , hostname )
113
+ agentID , err := GetAgentIDByHostname (client , policyID , hostname )
103
114
if err != nil {
104
115
return err
105
116
}
0 commit comments