mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
The NewRelic module relies on yfronto/newrelic, which no longer exists. yfronto deleted that directory quite awhile ago, and since then it has been vendored. But vendoring a missing repository creates problems when trying to update the vendored code. This PR brings the yfronto/newrelic code into the mainline. Signed-off-by: Chris Cummer <chriscummer@me.com>
61 lines
1.8 KiB
Go
61 lines
1.8 KiB
Go
package newrelic
|
|
|
|
// AlertEvent describes a triggered event.
|
|
type AlertEvent struct {
|
|
ID int `json:"id,omitempty"`
|
|
EventType string `json:"event_type,omitempty"`
|
|
Product string `json:"product,omitempty"`
|
|
EntityType string `json:"entity_type,omitempty"`
|
|
EntityGroupID int `json:"entity_group_id,omitempty"`
|
|
EntityID int `json:"entity_id,omitempty"`
|
|
Priority string `json:"priority,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
Timestamp int64 `json:"timestamp,omitempty"`
|
|
IncidentID int `json:"incident_id"`
|
|
}
|
|
|
|
// AlertEventFilter provides filters for AlertEventOptions when calling
|
|
// GetAlertEvents.
|
|
type AlertEventFilter struct {
|
|
// TODO: New relic restricts these options
|
|
Product string
|
|
EntityType string
|
|
EntityGroupID int
|
|
EntityID int
|
|
EventType string
|
|
}
|
|
|
|
// AlertEventOptions is an optional means of filtering AlertEvents when
|
|
// calling GetAlertEvents.
|
|
type AlertEventOptions struct {
|
|
Filter AlertEventFilter
|
|
Page int
|
|
}
|
|
|
|
func (o *AlertEventOptions) String() string {
|
|
if o == nil {
|
|
return ""
|
|
}
|
|
return encodeGetParams(map[string]interface{}{
|
|
"filter[product]": o.Filter.Product,
|
|
"filter[entity_type]": o.Filter.EntityType,
|
|
"filter[entity_group_id]": o.Filter.EntityGroupID,
|
|
"filter[entity_id]": o.Filter.EntityID,
|
|
"filter[event_type]": o.Filter.EventType,
|
|
"page": o.Page,
|
|
})
|
|
}
|
|
|
|
// GetAlertEvents will return a slice of recent AlertEvent items triggered,
|
|
// optionally filtering by AlertEventOptions.
|
|
func (c *Client) GetAlertEvents(options *AlertEventOptions) ([]AlertEvent, error) {
|
|
resp := &struct {
|
|
RecentEvents []AlertEvent `json:"recent_events,omitempty"`
|
|
}{}
|
|
err := c.doGet("alerts_events.json", options, resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return resp.RecentEvents, nil
|
|
}
|