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)
|
versionNum, err := strconv.Atoi(version)
|
||||||
return versionNum, err
|
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