Accept $ASSET_PATTERN
parent
1324376399
commit
10630df394
|
|
@ -25,6 +25,7 @@ type Config struct {
|
||||||
OllamaModel string
|
OllamaModel string
|
||||||
LocalCheckpoint string
|
LocalCheckpoint string
|
||||||
LocalTokenizer string
|
LocalTokenizer string
|
||||||
|
AssetPattern string
|
||||||
storage Storage
|
storage Storage
|
||||||
queue Queue
|
queue Queue
|
||||||
driver Driver
|
driver Driver
|
||||||
|
|
@ -103,7 +104,7 @@ func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config,
|
||||||
result.driver = pg
|
result.driver = pg
|
||||||
}
|
}
|
||||||
if result.FillWithTestdata {
|
if result.FillWithTestdata {
|
||||||
if err := FillWithTestdata(ctx, result.driver); err != nil {
|
if err := FillWithTestdata(ctx, result.driver, result.AssetPattern); err != nil {
|
||||||
return Config{}, err
|
return Config{}, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ type Driver interface {
|
||||||
Set(context.Context, string, string, []byte) error
|
Set(context.Context, string, string, []byte) error
|
||||||
}
|
}
|
||||||
|
|
||||||
func FillWithTestdata(ctx context.Context, driver Driver) error {
|
func FillWithTestdata(ctx context.Context, driver Driver, assetPattern string) error {
|
||||||
d := "./testdata/slack_events"
|
d := "./testdata/slack_events"
|
||||||
entries, err := os.ReadDir(d)
|
entries, err := os.ReadDir(d)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -37,7 +37,7 @@ func FillWithTestdata(ctx context.Context, driver Driver) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
m, err := ParseSlack(b)
|
m, err := ParseSlack(b, assetPattern)
|
||||||
if errors.Is(err, ErrIrrelevantMessage) {
|
if errors.Is(err, ErrIrrelevantMessage) {
|
||||||
continue
|
continue
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ func TestFillTestdata(t *testing.T) {
|
||||||
defer can()
|
defer can()
|
||||||
|
|
||||||
ram := NewRAM()
|
ram := NewRAM()
|
||||||
if err := FillWithTestdata(ctx, ram); err != nil {
|
if err := FillWithTestdata(ctx, ram, `(dpg|svc|svc)-[0-9a-z]*`); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
n := 0
|
n := 0
|
||||||
|
|
|
||||||
2
main.go
2
main.go
|
|
@ -200,7 +200,7 @@ func _newHandlerPostAPIV1EventsSlack(cfg Config) http.HandlerFunc {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
m, err := ParseSlack(b)
|
m, err := ParseSlack(b, cfg.AssetPattern)
|
||||||
if errors.Is(err, ErrIrrelevantMessage) {
|
if errors.Is(err, ErrIrrelevantMessage) {
|
||||||
return
|
return
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
@ -105,7 +106,9 @@ type (
|
||||||
slackAction struct{}
|
slackAction struct{}
|
||||||
)
|
)
|
||||||
|
|
||||||
func ParseSlack(b []byte) (Message, error) {
|
func ParseSlack(b []byte, assetPattern string) (Message, error) {
|
||||||
|
asset := regexp.MustCompile(assetPattern)
|
||||||
|
|
||||||
s, err := parseSlack(b)
|
s, err := parseSlack(b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return Message{}, err
|
return Message{}, err
|
||||||
|
|
@ -126,7 +129,7 @@ func ParseSlack(b []byte) (Message, error) {
|
||||||
EventName: strings.Split(s.Event.Attachments[0].Title, ": Firing: ")[1],
|
EventName: strings.Split(s.Event.Attachments[0].Title, ": Firing: ")[1],
|
||||||
Event: strings.Split(s.Event.Attachments[0].Title, ":")[0],
|
Event: strings.Split(s.Event.Attachments[0].Title, ":")[0],
|
||||||
Plaintext: s.Event.Attachments[0].Text,
|
Plaintext: s.Event.Attachments[0].Text,
|
||||||
Asset: "TODO",
|
Asset: asset.FindString(s.Event.Attachments[0].Text),
|
||||||
Resolved: !strings.HasPrefix(s.Event.Attachments[0].Color, "F"),
|
Resolved: !strings.HasPrefix(s.Event.Attachments[0].Color, "F"),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
@ -143,7 +146,7 @@ func ParseSlack(b []byte) (Message, error) {
|
||||||
EventName: "TODO",
|
EventName: "TODO",
|
||||||
Event: "TODO",
|
Event: "TODO",
|
||||||
Plaintext: s.Event.Text,
|
Plaintext: s.Event.Text,
|
||||||
Asset: "TODO",
|
Asset: asset.FindString(s.Event.Text),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||||
EventName: "TODO",
|
EventName: "TODO",
|
||||||
Event: "TODO",
|
Event: "TODO",
|
||||||
Plaintext: "I gotta do this",
|
Plaintext: "I gotta do this",
|
||||||
Asset: "TODO",
|
Asset: "",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"opsgenie_alert.json": {
|
"opsgenie_alert.json": {
|
||||||
|
|
@ -76,7 +76,7 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||||
EventName: "Alertconfig Workflow Failed",
|
EventName: "Alertconfig Workflow Failed",
|
||||||
Event: "#11071",
|
Event: "#11071",
|
||||||
Plaintext: "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>",
|
Plaintext: "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: "TODO",
|
Asset: "",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"opsgenie_alert_resolved.json": {
|
"opsgenie_alert_resolved.json": {
|
||||||
|
|
@ -110,7 +110,7 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||||
EventName: "Alertconfig Workflow Failed",
|
EventName: "Alertconfig Workflow Failed",
|
||||||
Event: "#11069",
|
Event: "#11069",
|
||||||
Plaintext: "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>",
|
Plaintext: "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: "TODO",
|
Asset: "",
|
||||||
Resolved: true,
|
Resolved: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -135,7 +135,7 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("ParseSlack", func(t *testing.T) {
|
t.Run("ParseSlack", func(t *testing.T) {
|
||||||
got, err := ParseSlack(b)
|
got, err := ParseSlack(b, `(red|dpg|svc)-[a-z0-9]*`)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue