@@ -11,8 +11,9 @@ import (
1111)
1212
1313type EntityDeleter struct {
14- EntityStore store.EntityStore
15- EventStore store.EventStore
14+ EntityStore store.EntityStore
15+ EventStore store.EventStore
16+ SilencedStore store.SilencedStore
1617}
1718
1819func (d EntityDeleter ) Delete (req * http.Request ) (interface {}, error ) {
@@ -22,6 +23,7 @@ func (d EntityDeleter) Delete(req *http.Request) (interface{}, error) {
2223 return nil , NewError (InvalidArgument , err )
2324 }
2425
26+ // Delete all events associated with the entity
2527 events , err := d .EventStore .GetEventsByEntity (req .Context (), entityName , & store.SelectionPredicate {})
2628 if err != nil {
2729 return nil , fmt .Errorf ("error fetching events for entity: %s" , err )
@@ -43,6 +45,40 @@ func (d EntityDeleter) Delete(req *http.Request) (interface{}, error) {
4345 }
4446 }
4547
48+ // Delete entity-specific silenced entries (e.g., entity:web-01:*)
49+ if d .SilencedStore != nil {
50+ entitySubscription := fmt .Sprintf ("entity:%s" , entityName )
51+ silencedEntries , err := d .SilencedStore .GetSilencedEntriesBySubscription (req .Context (), entitySubscription )
52+ if err != nil {
53+ // Log the error but continue with entity deletion
54+ logger .WithError (err ).WithFields (logrus.Fields {
55+ "entity" : entityName ,
56+ "subscription" : entitySubscription ,
57+ }).Warn ("error fetching silenced entries for entity" )
58+ } else if len (silencedEntries ) > 0 {
59+ silencedNames := make ([]string , 0 , len (silencedEntries ))
60+ for _ , entry := range silencedEntries {
61+ silencedNames = append (silencedNames , entry .Name )
62+ }
63+
64+ err = d .SilencedStore .DeleteSilencedEntryByName (req .Context (), silencedNames ... )
65+ if err != nil {
66+ // Log the error but continue with entity deletion
67+ logger .WithError (err ).WithFields (logrus.Fields {
68+ "entity" : entityName ,
69+ "silences" : silencedNames ,
70+ }).Warn ("error deleting silenced entries for entity" )
71+ } else {
72+ logger .WithFields (logrus.Fields {
73+ "entity" : entityName ,
74+ "silences" : silencedNames ,
75+ "count" : len (silencedNames ),
76+ }).Info ("deleted entity-specific silenced entries" )
77+ }
78+ }
79+ }
80+
81+ // Verify the entity exists before attempting deletion
4682 result , err := d .EntityStore .GetEntityByName (req .Context (), entityName )
4783 if err != nil {
4884 return nil , NewError (InternalErr , err )
@@ -52,5 +88,6 @@ func (d EntityDeleter) Delete(req *http.Request) (interface{}, error) {
5288 return nil , NewErrorf (NotFound )
5389 }
5490
91+ // Delete the entity
5592 return nil , d .EntityStore .DeleteEntityByName (req .Context (), entityName )
5693}
0 commit comments