1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/modules/newrelic/client/alert_conditions.go
Chris Cummer 3a388fba23
20191215 code improvements (#790)
* Upgrade godo to latest
* Fix a bunch of issues found by
* Running staticcheck on a codebase for the first time is a sobering experience
* go mod tidy
* More static improvements

Signed-off-by: Chris Cummer <chriscummer@me.com>
2019-12-16 20:25:29 -08:00

60 lines
2.0 KiB
Go

package newrelic
// AlertCondition describes what triggers an alert for a specific policy.
type AlertCondition struct {
Enabled bool `json:"enabled,omitempty"`
Entities []string `json:"entities,omitempty"`
ID int `json:"id,omitempty"`
Metric string `json:"metric,omitempty"`
Name string `json:"name,omitempty"`
RunbookURL string `json:"runbook_url,omitempty"`
Terms []AlertConditionTerm `json:"terms,omitempty"`
Type string `json:"type,omitempty"`
UserDefined AlertUserDefined `json:"user_defined,omitempty"`
}
// AlertConditionTerm defines thresholds that trigger an AlertCondition.
type AlertConditionTerm struct {
Duration string `json:"duration,omitempty"`
Operator string `json:"operator,omitempty"`
Priority string `json:"priority,omitempty"`
Threshold string `json:"threshold,omitempty"`
TimeFunction string `json:"time_function,omitempty"`
}
// AlertUserDefined describes user-defined behavior for an AlertCondition.
type AlertUserDefined struct {
Metric string `json:"metric,omitempty"`
ValueFunction string `json:"value_function,omitempty"`
}
// AlertConditionOptions define filters for GetAlertConditions.
type AlertConditionOptions struct {
policyID int
Page int
}
func (o *AlertConditionOptions) String() string {
if o == nil {
return ""
}
return encodeGetParams(map[string]interface{}{
"policy_id": o.policyID,
"page": o.Page,
})
}
// GetAlertConditions will return any AlertCondition defined for a given
// policy, optionally filtered by AlertConditionOptions.
func (c *Client) GetAlertConditions(policy int, options *AlertConditionOptions) ([]AlertCondition, error) {
resp := &struct {
Conditions []AlertCondition `json:"conditions,omitempty"`
}{}
options.policyID = policy
err := c.doGet("alerts_conditions.json", options, resp)
if err != nil {
return nil, err
}
return resp.Conditions, nil
}