layer1: track namespace removals in manager

This commit is contained in:
Naeel
2026-04-26 10:39:59 +03:00
parent b6f3640bbe
commit 447133d5b2
4 changed files with 82 additions and 5 deletions
+18 -1
View File
@@ -127,11 +127,19 @@ func StartNSWatcher(
},
// UpdateFunc fires when an existing Namespace is updated — covers the case
// where the label is added to a pre-existing Namespace.
UpdateFunc: func(_, newObj interface{}) {
UpdateFunc: func(oldObj, newObj interface{}) {
nsObj, ok := newObj.(*corev1.Namespace)
if !ok {
return
}
oldNSObj, _ := oldObj.(*corev1.Namespace)
if oldNSObj != nil && utils.IsManagedNamespace(oldNSObj.Labels) && !utils.IsManagedNamespace(nsObj.Labels) {
event := utils.NamespaceEventFromNamespace(utils.NamespaceEventRemove, nsObj, utils.NamespaceSourceWatcher, time.Now().UTC())
nsManager.Upsert(event)
logger.Info("multitenant.NSWatcher: namespace removed from manager state; runtime registrations kept",
zap.String("namespace", nsObj.Name))
return
}
if !utils.IsManagedNamespace(nsObj.Labels) {
return // label was removed — nothing to do (executor keeps existing registrations)
}
@@ -141,6 +149,15 @@ func StartNSWatcher(
zap.String("namespace", nsObj.Name), zap.Error(err))
}
},
DeleteFunc: func(obj interface{}) {
event := utils.NamespaceEventFromObject(utils.NamespaceEventRemove, obj, utils.NamespaceSourceWatcher, time.Now().UTC())
if event.Name == "" {
return
}
nsManager.Upsert(event)
logger.Info("multitenant.NSWatcher: namespace deleted from manager state; runtime registrations kept",
zap.String("namespace", event.Name))
},
})
mgr.Add(ctx, func(ctx context.Context) {