Add GetTriggers and GetProblems API methods
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -557,3 +557,60 @@ func (ds *Zabbix) GetVersion(ctx context.Context) (int, error) {
|
||||
versionNum, err := strconv.Atoi(version)
|
||||
return versionNum, err
|
||||
}
|
||||
|
||||
func (ds *Zabbix) GetTriggers(ctx context.Context, groupFilter string, hostFilter string) ([]Trigger, error) {
|
||||
hosts, err := ds.GetHosts(ctx, groupFilter, hostFilter)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(hosts) == 0 {
|
||||
return []Trigger{}, nil
|
||||
}
|
||||
|
||||
hostids := make([]string, 0)
|
||||
for _, host := range hosts {
|
||||
hostids = append(hostids, host.ID)
|
||||
}
|
||||
|
||||
params := ZabbixAPIParams{
|
||||
"output": []string{"triggerid", "description", "priority", "value"},
|
||||
"hostids": hostids,
|
||||
"selectHosts": []string{"hostid", "name"},
|
||||
"selectTags": "extend",
|
||||
"monitored": true,
|
||||
"expandDescription": true,
|
||||
}
|
||||
|
||||
result, err := ds.Request(ctx, &ZabbixAPIRequest{Method: "trigger.get", Params: params})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var triggers []Trigger
|
||||
err = convertTo(result, &triggers)
|
||||
return triggers, err
|
||||
}
|
||||
|
||||
func (ds *Zabbix) GetProblems(ctx context.Context, triggerIDs []string) ([]Problem, error) {
|
||||
if len(triggerIDs) == 0 {
|
||||
return []Problem{}, nil
|
||||
}
|
||||
|
||||
params := ZabbixAPIParams{
|
||||
"output": []string{"eventid", "objectid", "severity", "name"},
|
||||
"objectids": triggerIDs,
|
||||
"source": "0",
|
||||
"object": "0",
|
||||
"recent": true,
|
||||
"selectTags": "extend",
|
||||
}
|
||||
|
||||
result, err := ds.Request(ctx, &ZabbixAPIRequest{Method: "problem.get", Params: params})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var problems []Problem
|
||||
err = convertTo(result, &problems)
|
||||
return problems, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user