parse datacenter from Tags field
parent
b1d93a7698
commit
6b962ea509
|
|
@ -26,6 +26,7 @@ type Config struct {
|
|||
LocalCheckpoint string
|
||||
LocalTokenizer string
|
||||
AssetPattern string
|
||||
DatacenterPattern string
|
||||
storage Storage
|
||||
queue Queue
|
||||
driver Driver
|
||||
|
|
@ -41,6 +42,7 @@ func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config,
|
|||
Port: 38080,
|
||||
OllamaModel: "gemma:2b",
|
||||
AssetPattern: `(dpg|svc|red)-[a-z0-9-]*`,
|
||||
DatacenterPattern: `[a-z]{4}[a-z]*-[0-9]`,
|
||||
}
|
||||
|
||||
var m map[string]any
|
||||
|
|
@ -105,7 +107,7 @@ func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config,
|
|||
result.driver = pg
|
||||
}
|
||||
if result.FillWithTestdata {
|
||||
if err := FillWithTestdata(ctx, result.driver, result.AssetPattern); err != nil {
|
||||
if err := FillWithTestdata(ctx, result.driver, result.AssetPattern, result.DatacenterPattern); 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, assetPattern string) error {
|
||||
func FillWithTestdata(ctx context.Context, driver Driver, assetPattern, datacenterPattern 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, assetPattern string) e
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
m, err := ParseSlack(b, assetPattern)
|
||||
m, err := ParseSlack(b, assetPattern, datacenterPattern)
|
||||
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, renderAssetPattern); err != nil {
|
||||
if err := FillWithTestdata(ctx, ram, renderAssetPattern, renderDatacenterPattern); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
n := 0
|
||||
|
|
|
|||
2
main.go
2
main.go
|
|
@ -246,7 +246,7 @@ func _newHandlerPostAPIV1EventsSlack(cfg Config) http.HandlerFunc {
|
|||
return
|
||||
}
|
||||
|
||||
m, err := ParseSlack(b, cfg.AssetPattern)
|
||||
m, err := ParseSlack(b, cfg.AssetPattern, cfg.DatacenterPattern)
|
||||
if errors.Is(err, ErrIrrelevantMessage) {
|
||||
return
|
||||
} else if err != nil {
|
||||
|
|
|
|||
12
message.go
12
message.go
|
|
@ -24,6 +24,7 @@ type Message struct {
|
|||
Plaintext string
|
||||
Asset string
|
||||
Resolved bool
|
||||
Datacenter string
|
||||
}
|
||||
|
||||
func (m Message) Empty() bool {
|
||||
|
|
@ -106,8 +107,9 @@ type (
|
|||
slackAction struct{}
|
||||
)
|
||||
|
||||
func ParseSlack(b []byte, assetPattern string) (Message, error) {
|
||||
func ParseSlack(b []byte, assetPattern, datacenterPattern string) (Message, error) {
|
||||
asset := regexp.MustCompile(assetPattern)
|
||||
datacenter := regexp.MustCompile(datacenterPattern)
|
||||
|
||||
s, err := parseSlack(b)
|
||||
if err != nil {
|
||||
|
|
@ -120,6 +122,12 @@ func ParseSlack(b []byte, assetPattern string) (Message, error) {
|
|||
} else if !strings.Contains(s.Event.Attachments[0].Title, ": Firing: ") {
|
||||
return Message{}, ErrIrrelevantMessage
|
||||
}
|
||||
var tagsField string
|
||||
for _, field := range s.Event.Attachments[0].Fields {
|
||||
if field.Title == "Tags" {
|
||||
tagsField = field.Value
|
||||
}
|
||||
}
|
||||
return Message{
|
||||
ID: fmt.Sprintf("%s/%v", s.Event.ID, s.TS),
|
||||
TS: s.TS,
|
||||
|
|
@ -131,6 +139,7 @@ func ParseSlack(b []byte, assetPattern string) (Message, error) {
|
|||
Plaintext: s.Event.Attachments[0].Text,
|
||||
Asset: asset.FindString(s.Event.Attachments[0].Text),
|
||||
Resolved: !strings.HasPrefix(s.Event.Attachments[0].Color, "F"),
|
||||
Datacenter: datacenter.FindString(tagsField),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
|
@ -147,6 +156,7 @@ func ParseSlack(b []byte, assetPattern string) (Message, error) {
|
|||
Event: "",
|
||||
Plaintext: s.Event.Text,
|
||||
Asset: asset.FindString(s.Event.Text),
|
||||
Datacenter: datacenter.FindString(s.Event.Text),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import (
|
|||
|
||||
var (
|
||||
renderAssetPattern = `(dpg|svc|red)-[a-z0-9-]*[a-z0-9]`
|
||||
renderDatacenterPattern = `[a-z]{4}[a-z]*-[0-9]`
|
||||
)
|
||||
|
||||
func TestParseSlackTestdata(t *testing.T) {
|
||||
|
|
@ -139,7 +140,7 @@ func TestParseSlackTestdata(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("ParseSlack", func(t *testing.T) {
|
||||
got, err := ParseSlack(b, renderAssetPattern)
|
||||
got, err := ParseSlack(b, renderAssetPattern, renderDatacenterPattern)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue