added scraping Routing Team as Team
parent
098986eb07
commit
9bc47bfde6
12
slack.go
12
slack.go
|
|
@ -67,11 +67,11 @@ func newSlackToModelProcess(cfg Config) processFunc {
|
||||||
|
|
||||||
event := model.Event{}
|
event := model.Event{}
|
||||||
if s.Event != "" && s.Source != "" && s.TS > 0 && s.EventName != "" {
|
if s.Event != "" && s.Source != "" && s.TS > 0 && s.EventName != "" {
|
||||||
event = model.NewEvent(s.Event, s.Source, s.TS, s.EventName, s.Asset, s.Datacenter, "TODO", s.Resolved)
|
event = model.NewEvent(s.Event, s.Source, s.TS, s.EventName, s.Asset, s.Datacenter, s.Team, s.Resolved)
|
||||||
}
|
}
|
||||||
message := model.Message{}
|
message := model.Message{}
|
||||||
if s.ID != "" && s.Source != "" && s.TS > 0 && s.Thread != "" {
|
if s.ID != "" && s.Source != "" && s.TS > 0 && s.Thread != "" {
|
||||||
message = model.NewMessage(s.ID, s.Source, s.TS, "TODO", s.Plaintext, s.Thread)
|
message = model.NewMessage(s.ID, s.Source, s.TS, s.Author, s.Plaintext, s.Thread)
|
||||||
}
|
}
|
||||||
thread := model.Thread{}
|
thread := model.Thread{}
|
||||||
if s.Thread != "" && s.Source != "" && s.TS > 0 && s.Event != "" {
|
if s.Thread != "" && s.Source != "" && s.TS > 0 && s.Event != "" {
|
||||||
|
|
@ -99,6 +99,7 @@ type (
|
||||||
Resolved bool
|
Resolved bool
|
||||||
Datacenter string
|
Datacenter string
|
||||||
Author string
|
Author string
|
||||||
|
Team string
|
||||||
}
|
}
|
||||||
|
|
||||||
slackMessage struct {
|
slackMessage struct {
|
||||||
|
|
@ -173,9 +174,13 @@ func parseSlack(b []byte) (parsedSlackMessage, error) {
|
||||||
return parsedSlackMessage{}, ErrIrrelevantMessage
|
return parsedSlackMessage{}, ErrIrrelevantMessage
|
||||||
}
|
}
|
||||||
var tagsField string
|
var tagsField string
|
||||||
|
var teamField string
|
||||||
for _, field := range s.Event.Attachments[0].Fields {
|
for _, field := range s.Event.Attachments[0].Fields {
|
||||||
if field.Title == "Tags" {
|
switch field.Title {
|
||||||
|
case "Tags":
|
||||||
tagsField = field.Value
|
tagsField = field.Value
|
||||||
|
case "Routed Teams":
|
||||||
|
teamField = field.Value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return parsedSlackMessage{
|
return parsedSlackMessage{
|
||||||
|
|
@ -191,6 +196,7 @@ func parseSlack(b []byte) (parsedSlackMessage, error) {
|
||||||
Resolved: !strings.HasPrefix(s.Event.Attachments[0].Color, "F"),
|
Resolved: !strings.HasPrefix(s.Event.Attachments[0].Color, "F"),
|
||||||
Datacenter: tagsField,
|
Datacenter: tagsField,
|
||||||
Author: s.Event.Bot.Name,
|
Author: s.Event.Bot.Name,
|
||||||
|
Team: teamField,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,14 +40,14 @@ func TestSlackToModelPipeline(t *testing.T) {
|
||||||
"Alertconfig Workflow Failed",
|
"Alertconfig Workflow Failed",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"TODO",
|
"Datastores Non-Critical",
|
||||||
false,
|
false,
|
||||||
),
|
),
|
||||||
Message: model.NewMessage(
|
Message: model.NewMessage(
|
||||||
"1712927439.728409/1712927439",
|
"1712927439.728409/1712927439",
|
||||||
"https://renderinc.slack.com/archives/C06U1DDBBU4/p1712927439728409",
|
"https://renderinc.slack.com/archives/C06U1DDBBU4/p1712927439728409",
|
||||||
1712927439,
|
1712927439,
|
||||||
"TODO",
|
"Opsgenie for Alert Management",
|
||||||
"At least one alertconfig run has failed unexpectedly.\nDashboard: <https://grafana.render.com/d/VLZU83YVk?orgId=1>\nPanel: <https://grafana.render.com/d/VLZU83YVk?orgId=1&viewPanel=17>\nSource: <https://grafana.render.com/alerting/grafana/fa7b06b8-b4d8-4979-bce7-5e1c432edd81/view?orgId=1>",
|
"At least one alertconfig run has failed unexpectedly.\nDashboard: <https://grafana.render.com/d/VLZU83YVk?orgId=1>\nPanel: <https://grafana.render.com/d/VLZU83YVk?orgId=1&viewPanel=17>\nSource: <https://grafana.render.com/alerting/grafana/fa7b06b8-b4d8-4979-bce7-5e1c432edd81/view?orgId=1>",
|
||||||
"1712927439.728409",
|
"1712927439.728409",
|
||||||
),
|
),
|
||||||
|
|
@ -166,6 +166,7 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||||
Asset: "At least one alertconfig run has failed unexpectedly.\nDashboard: <https://grafana.render.com/d/VLZU83YVk?orgId=1>\nPanel: <https://grafana.render.com/d/VLZU83YVk?orgId=1&viewPanel=17>\nSource: <https://grafana.render.com/alerting/grafana/fa7b06b8-b4d8-4979-bce7-5e1c432edd81/view?orgId=1>",
|
Asset: "At least one alertconfig run has failed unexpectedly.\nDashboard: <https://grafana.render.com/d/VLZU83YVk?orgId=1>\nPanel: <https://grafana.render.com/d/VLZU83YVk?orgId=1&viewPanel=17>\nSource: <https://grafana.render.com/alerting/grafana/fa7b06b8-b4d8-4979-bce7-5e1c432edd81/view?orgId=1>",
|
||||||
Datacenter: "alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb",
|
Datacenter: "alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb",
|
||||||
Author: "Opsgenie for Alert Management",
|
Author: "Opsgenie for Alert Management",
|
||||||
|
Team: "Datastores Non-Critical",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"opsgenie_alert_resolved.json": {
|
"opsgenie_alert_resolved.json": {
|
||||||
|
|
@ -203,6 +204,7 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||||
Resolved: true,
|
Resolved: true,
|
||||||
Datacenter: "alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb",
|
Datacenter: "alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb",
|
||||||
Author: "Opsgenie for Alert Management",
|
Author: "Opsgenie for Alert Management",
|
||||||
|
Team: "Datastores Non-Critical",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"reingested_alert.json": {
|
"reingested_alert.json": {
|
||||||
|
|
@ -219,6 +221,7 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||||
Resolved: true,
|
Resolved: true,
|
||||||
Datacenter: "alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb",
|
Datacenter: "alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb",
|
||||||
Author: "Opsgenie for Alert Management",
|
Author: "Opsgenie for Alert Management",
|
||||||
|
Team: "Datastores Non-Critical",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue