Add GetTriggers and GetProblems API methods

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Wesley van Tilburg
2026-01-15 13:11:30 +00:00
parent 4c29637fde
commit c6a97c65e6

View File

@@ -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
}