1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

OpsGenie on-call schedules into dashboard

This commit is contained in:
Chris Cummer
2018-04-03 03:44:57 -07:00
committed by Chris Cummer
parent 3ebb299350
commit ff994cb793
3 changed files with 29 additions and 25 deletions

View File

@@ -7,15 +7,16 @@ import (
"os"
)
type Data struct {
OnCallRecipients []string `json:"onCallRecipients"`
Parent Parent `json:"_parent"`
type OnCallResponse struct {
OnCallData []OnCallData `json:"data"`
Message string `json:"message"`
RequestID string `json:"requestId"`
Took float32 `json:"took"`
}
type OnCallData struct {
Data Data `json:"data"`
Message string `json:"message"`
RequestID string `json:"requestId"`
Took float32 `json:"took"`
Recipients []string `json:"onCallRecipients"`
Parent Parent `json:"_parent"`
}
type Parent struct {
@@ -24,11 +25,10 @@ type Parent struct {
Enabled bool `json:"enabled"`
}
func Fetch() *OnCallData {
func Fetch() *OnCallResponse {
apiKey := os.Getenv("WTF_OPS_GENIE_API_KEY")
scheduleName := "Oversight"
url := fmt.Sprintf("https://api.opsgenie.com/v2/schedules/%s/on-calls?scheduleIdentifierType=name&flat=true", scheduleName)
url := "https://api.opsgenie.com/v2/schedules/on-calls?flat=true"
req, err := http.NewRequest("GET", url, nil)
if err != nil {
@@ -45,11 +45,10 @@ func Fetch() *OnCallData {
}
defer resp.Body.Close()
var onCallData OnCallData
if err := json.NewDecoder(resp.Body).Decode(&onCallData); err != nil {
var onCallResponse OnCallResponse
if err := json.NewDecoder(resp.Body).Decode(&onCallResponse); err != nil {
panic(err)
}
return &onCallData
return &onCallResponse
}

View File

@@ -20,7 +20,7 @@ func NewWidget() *Widget {
BaseWidget: wtf.BaseWidget{
Name: "OpsGenie",
RefreshedAt: time.Now(),
RefreshInt: 28800,
RefreshInt: 21600,
},
}
@@ -35,7 +35,7 @@ func NewWidget() *Widget {
func (widget *Widget) Refresh() {
data := Fetch()
widget.View.SetTitle(" OpsGenie ")
widget.View.SetTitle(" ⏰ On Call ")
widget.RefreshedAt = time.Now()
widget.View.Clear()
@@ -51,14 +51,19 @@ func (widget *Widget) addView() {
view.SetBorderColor(tcell.ColorGray)
view.SetDynamicColors(true)
view.SetTitle(widget.Name)
view.SetWrap(false)
widget.View = view
}
func (widget *Widget) contentFrom(onCallData *OnCallData) string {
func (widget *Widget) contentFrom(onCallResponse *OnCallResponse) string {
str := "\n"
str = str + fmt.Sprintf(" [red]%s[white]\n", onCallData.Data.Parent.Name)
str = str + fmt.Sprintf(" %s\n", strings.Join(onCallData.Data.OnCallRecipients, ", "))
for _, data := range onCallResponse.OnCallData {
str = str + fmt.Sprintf(" [green]%s[white]\n", data.Parent.Name)
str = str + fmt.Sprintf(" %s\n", strings.Join(data.Recipients, ", "))
str = str + "\n"
}
return str
}