@@ -14,6 +14,7 @@ import (
1414
1515 "github.com/kagent-dev/khook/api/v1alpha2"
1616 "github.com/kagent-dev/khook/internal/interfaces"
17+ "github.com/kagent-dev/khook/internal/sre"
1718)
1819
1920// Processor handles the complete event processing pipeline
@@ -22,6 +23,7 @@ type Processor struct {
2223 deduplicationManager interfaces.DeduplicationManager
2324 kagentClient interfaces.KagentClient
2425 statusManager interfaces.StatusManager
26+ sreServer interface {}
2527 logger logr.Logger
2628}
2729
@@ -31,12 +33,14 @@ func NewProcessor(
3133 deduplicationManager interfaces.DeduplicationManager ,
3234 kagentClient interfaces.KagentClient ,
3335 statusManager interfaces.StatusManager ,
36+ sreServer interface {},
3437) * Processor {
3538 return & Processor {
3639 eventWatcher : eventWatcher ,
3740 deduplicationManager : deduplicationManager ,
3841 kagentClient : kagentClient ,
3942 statusManager : statusManager ,
43+ sreServer : sreServer ,
4044 logger : log .Log .WithName ("event-processor" ),
4145 }
4246}
@@ -167,6 +171,19 @@ func (p *Processor) processEventMatch(ctx context.Context, match EventMatch) err
167171 // Continue even if status recording fails
168172 }
169173
174+ // Add alert to SRE server if available
175+ p .logger .Info ("Checking SRE server integration" , "sreServer" , p .sreServer != nil )
176+ if p .sreServer != nil {
177+ if sreServer , ok := p .sreServer .(* sre.Server ); ok {
178+ // Convert event to alert and add to SRE server
179+ alert := sre .ConvertEventToAlert (match .Event , match .Hook , agentRef , response )
180+ sreServer .AddAlert (alert )
181+ p .logger .Info ("Added alert to SRE server" , "alertId" , alert .ID )
182+ } else {
183+ p .logger .Error (nil , "Type assertion failed for SRE server" , "sreServerType" , fmt .Sprintf ("%T" , p .sreServer ))
184+ }
185+ }
186+
170187 // Mark event as notified to suppress re-sending within suppression window
171188 p .deduplicationManager .MarkNotified (hookRef , match .Event )
172189
0 commit comments