layer1: share namespace watcher lifecycle helpers

This commit is contained in:
Naeel
2026-04-26 10:45:03 +03:00
parent 0e08664ef6
commit 4cd4bc9507
6 changed files with 129 additions and 33 deletions
+7 -11
View File
@@ -117,8 +117,7 @@ func StartNSWatcher(
if !ok || nsObj.Name == "" {
return
}
nsManager.Upsert(utils.NamespaceEventFromNamespace(utils.NamespaceEventAdd, nsObj, utils.NamespaceSourceWatcher, time.Now().UTC()))
if _, _, err := nsManager.DispatchAdd(ctx, nsObj.Name); err != nil {
if _, _, err := utils.DispatchNamespaceAdd(ctx, nsManager, nsObj, utils.NamespaceSourceWatcher, time.Now().UTC()); err != nil {
logger.Error("multitenant.NSWatcher: DispatchAdd failed",
zap.String("namespace", nsObj.Name), zap.Error(err))
}
@@ -131,9 +130,8 @@ func StartNSWatcher(
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)
if utils.NamespaceBecameUnmanaged(oldNSObj, nsObj) {
_, _ = utils.RecordNamespaceRemoval(nsManager, nsObj, utils.NamespaceSourceWatcher, time.Now().UTC())
logger.Info("multitenant.NSWatcher: namespace removed from manager state; runtime registrations kept",
zap.String("namespace", nsObj.Name))
return
@@ -141,20 +139,18 @@ func StartNSWatcher(
if !utils.IsManagedNamespace(nsObj.Labels) {
return // label was removed — nothing to do (executor keeps existing registrations)
}
nsManager.Upsert(utils.NamespaceEventFromNamespace(utils.NamespaceEventUpdate, nsObj, utils.NamespaceSourceWatcher, time.Now().UTC()))
if _, _, err := nsManager.DispatchResync(ctx, nsObj.Name); err != nil {
if _, _, err := utils.DispatchNamespaceResync(ctx, nsManager, nsObj, utils.NamespaceSourceWatcher, time.Now().UTC()); err != nil {
logger.Error("multitenant.NSWatcher: DispatchResync failed",
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 == "" {
record, ok := utils.RecordNamespaceRemoval(nsManager, obj, utils.NamespaceSourceWatcher, time.Now().UTC())
if !ok {
return
}
nsManager.Upsert(event)
logger.Info("multitenant.NSWatcher: namespace deleted from manager state; runtime registrations kept",
zap.String("namespace", event.Name))
zap.String("namespace", record.Name))
},
})