layer1: centralize namespace watcher handlers

This commit is contained in:
Naeel
2026-04-26 10:47:12 +03:00
parent 4cd4bc9507
commit 340b9cae84
6 changed files with 125 additions and 84 deletions
+37
View File
@@ -7,6 +7,7 @@ import (
"sync"
"time"
"go.uber.org/zap"
corev1 "k8s.io/api/core/v1"
)
@@ -137,6 +138,42 @@ func RecordNamespaceRemoval(manager NamespaceManager, obj interface{}, source Na
return record, true
}
func HandleWatcherNamespaceAdd(ctx context.Context, logger *zap.Logger, component string, manager NamespaceManager, namespace *corev1.Namespace) {
if namespace == nil || namespace.Name == "" {
return
}
if _, _, err := DispatchNamespaceAdd(ctx, manager, namespace, NamespaceSourceWatcher, time.Now().UTC()); err != nil {
logger.Error(component+": DispatchAdd failed", zap.String("namespace", namespace.Name), zap.Error(err))
}
}
func HandleWatcherNamespaceUpdate(ctx context.Context, logger *zap.Logger, component string, manager NamespaceManager, oldNamespace *corev1.Namespace, newNamespace *corev1.Namespace) {
if newNamespace == nil {
return
}
if NamespaceBecameUnmanaged(oldNamespace, newNamespace) {
_, _ = RecordNamespaceRemoval(manager, newNamespace, NamespaceSourceWatcher, time.Now().UTC())
logger.Info(component+": namespace removed from manager state; runtime registrations kept",
zap.String("namespace", newNamespace.Name))
return
}
if !IsManagedNamespace(newNamespace.Labels) {
return
}
if _, _, err := DispatchNamespaceResync(ctx, manager, newNamespace, NamespaceSourceWatcher, time.Now().UTC()); err != nil {
logger.Error(component+": DispatchResync failed", zap.String("namespace", newNamespace.Name), zap.Error(err))
}
}
func HandleWatcherNamespaceDelete(logger *zap.Logger, component string, manager NamespaceManager, obj interface{}) {
record, ok := RecordNamespaceRemoval(manager, obj, NamespaceSourceWatcher, time.Now().UTC())
if !ok {
return
}
logger.Info(component+": namespace deleted from manager state; runtime registrations kept",
zap.String("namespace", record.Name))
}
func (m *inMemoryNamespaceManager) Subscribe(subscriber NamespaceSubscriber) {
m.mu.Lock()
defer m.mu.Unlock()