Compare commits
2 Commits
1324376399
...
85d589a570
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85d589a570 | ||
|
|
10630df394 |
@@ -25,6 +25,7 @@ type Config struct {
|
||||
OllamaModel string
|
||||
LocalCheckpoint string
|
||||
LocalTokenizer string
|
||||
AssetPattern string
|
||||
storage Storage
|
||||
queue Queue
|
||||
driver Driver
|
||||
@@ -39,6 +40,7 @@ func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config,
|
||||
def := Config{
|
||||
Port: 38080,
|
||||
OllamaModel: "gemma:2b",
|
||||
AssetPattern: `(dpg|svc|red)-[a-z0-9-]*`,
|
||||
}
|
||||
|
||||
var m map[string]any
|
||||
@@ -103,7 +105,7 @@ func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config,
|
||||
result.driver = pg
|
||||
}
|
||||
if result.FillWithTestdata {
|
||||
if err := FillWithTestdata(ctx, result.driver); err != nil {
|
||||
if err := FillWithTestdata(ctx, result.driver, result.AssetPattern); err != nil {
|
||||
return Config{}, err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ type Driver interface {
|
||||
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"
|
||||
entries, err := os.ReadDir(d)
|
||||
if err != nil {
|
||||
@@ -37,7 +37,7 @@ func FillWithTestdata(ctx context.Context, driver Driver) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
m, err := ParseSlack(b)
|
||||
m, err := ParseSlack(b, assetPattern)
|
||||
if errors.Is(err, ErrIrrelevantMessage) {
|
||||
continue
|
||||
} else if err != nil {
|
||||
|
||||
@@ -17,7 +17,7 @@ func TestFillTestdata(t *testing.T) {
|
||||
defer can()
|
||||
|
||||
ram := NewRAM()
|
||||
if err := FillWithTestdata(ctx, ram); err != nil {
|
||||
if err := FillWithTestdata(ctx, ram, renderAssetPattern); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
n := 0
|
||||
|
||||
2
main.go
2
main.go
@@ -200,7 +200,7 @@ func _newHandlerPostAPIV1EventsSlack(cfg Config) http.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
m, err := ParseSlack(b)
|
||||
m, err := ParseSlack(b, cfg.AssetPattern)
|
||||
if errors.Is(err, ErrIrrelevantMessage) {
|
||||
return
|
||||
} else if err != nil {
|
||||
|
||||
11
message.go
11
message.go
@@ -4,6 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
@@ -105,7 +106,9 @@ type (
|
||||
slackAction struct{}
|
||||
)
|
||||
|
||||
func ParseSlack(b []byte) (Message, error) {
|
||||
func ParseSlack(b []byte, assetPattern string) (Message, error) {
|
||||
asset := regexp.MustCompile(assetPattern)
|
||||
|
||||
s, err := parseSlack(b)
|
||||
if err != nil {
|
||||
return Message{}, err
|
||||
@@ -124,9 +127,9 @@ func ParseSlack(b []byte) (Message, error) {
|
||||
Channel: s.Event.Channel,
|
||||
Thread: s.Event.ID,
|
||||
EventName: strings.Split(s.Event.Attachments[0].Title, ": Firing: ")[1],
|
||||
Event: strings.Split(s.Event.Attachments[0].Title, ":")[0],
|
||||
Event: strings.TrimPrefix(strings.Split(s.Event.Attachments[0].Title, ":")[0], "#"),
|
||||
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"),
|
||||
}, nil
|
||||
}
|
||||
@@ -143,7 +146,7 @@ func ParseSlack(b []byte) (Message, error) {
|
||||
EventName: "TODO",
|
||||
Event: "TODO",
|
||||
Plaintext: s.Event.Text,
|
||||
Asset: "TODO",
|
||||
Asset: asset.FindString(s.Event.Text),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,10 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
var (
|
||||
renderAssetPattern = `(dpg|svc|red)-[a-z0-9-]*[a-z0-9]`
|
||||
)
|
||||
|
||||
func TestParseSlackTestdata(t *testing.T) {
|
||||
cases := map[string]struct {
|
||||
slackMessage slackMessage
|
||||
@@ -42,7 +46,7 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||
EventName: "TODO",
|
||||
Event: "TODO",
|
||||
Plaintext: "I gotta do this",
|
||||
Asset: "TODO",
|
||||
Asset: "",
|
||||
},
|
||||
},
|
||||
"opsgenie_alert.json": {
|
||||
@@ -74,9 +78,9 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||
Channel: "C06U1DDBBU4",
|
||||
Thread: "1712927439.728409",
|
||||
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>",
|
||||
Asset: "TODO",
|
||||
Asset: "",
|
||||
},
|
||||
},
|
||||
"opsgenie_alert_resolved.json": {
|
||||
@@ -108,9 +112,9 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||
Channel: "C06U1DDBBU4",
|
||||
Thread: "1712916339.000300",
|
||||
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>",
|
||||
Asset: "TODO",
|
||||
Asset: "",
|
||||
Resolved: true,
|
||||
},
|
||||
},
|
||||
@@ -135,7 +139,7 @@ func TestParseSlackTestdata(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("ParseSlack", func(t *testing.T) {
|
||||
got, err := ParseSlack(b)
|
||||
got, err := ParseSlack(b, renderAssetPattern)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user