layer1: share update removal policy
This commit is contained in:
@@ -56,7 +56,7 @@ func StartNSWatcher(
|
||||
oldNSObj, _ := oldObj.(*corev1.Namespace)
|
||||
nsObj, ok := newObj.(*corev1.Namespace)
|
||||
if ok {
|
||||
utils.HandleWatcherNamespaceUpdate(ctx, logger, "buildermgr.NSWatcher", nsManager, oldNSObj, nsObj)
|
||||
utils.HandleWatcherNamespaceUpdate(ctx, logger, "buildermgr.NSWatcher", nsManager, oldNSObj, nsObj, utils.NamespaceRemovalStrategyTrackOnly)
|
||||
}
|
||||
},
|
||||
DeleteFunc: func(obj interface{}) {
|
||||
|
||||
@@ -124,7 +124,7 @@ func StartNSWatcher(
|
||||
oldNSObj, _ := oldObj.(*corev1.Namespace)
|
||||
nsObj, ok := newObj.(*corev1.Namespace)
|
||||
if ok {
|
||||
utils.HandleWatcherNamespaceUpdate(ctx, logger, "multitenant.NSWatcher", nsManager, oldNSObj, nsObj)
|
||||
utils.HandleWatcherNamespaceUpdate(ctx, logger, "multitenant.NSWatcher", nsManager, oldNSObj, nsObj, utils.NamespaceRemovalStrategyTrackOnly)
|
||||
}
|
||||
},
|
||||
DeleteFunc: func(obj interface{}) {
|
||||
|
||||
@@ -56,7 +56,7 @@ func StartNSWatcher(
|
||||
oldNSObj, _ := oldObj.(*corev1.Namespace)
|
||||
nsObj, ok := newObj.(*corev1.Namespace)
|
||||
if ok {
|
||||
utils.HandleWatcherNamespaceUpdate(ctx, logger, "router.NSWatcher", nsManager, oldNSObj, nsObj)
|
||||
utils.HandleWatcherNamespaceUpdate(ctx, logger, "router.NSWatcher", nsManager, oldNSObj, nsObj, utils.NamespaceRemovalStrategyTrackOnly)
|
||||
}
|
||||
},
|
||||
DeleteFunc: func(obj interface{}) {
|
||||
|
||||
@@ -147,12 +147,12 @@ func HandleWatcherNamespaceAdd(ctx context.Context, logger *zap.Logger, componen
|
||||
}
|
||||
}
|
||||
|
||||
func HandleWatcherNamespaceUpdate(ctx context.Context, logger *zap.Logger, component string, manager NamespaceManager, oldNamespace *corev1.Namespace, newNamespace *corev1.Namespace) {
|
||||
func HandleWatcherNamespaceUpdate(ctx context.Context, logger *zap.Logger, component string, manager NamespaceManager, oldNamespace *corev1.Namespace, newNamespace *corev1.Namespace, strategy NamespaceRemovalStrategy) {
|
||||
if newNamespace == nil {
|
||||
return
|
||||
}
|
||||
if NamespaceBecameUnmanaged(oldNamespace, newNamespace) {
|
||||
HandleWatcherNamespaceRemoval(ctx, logger, component, manager, newNamespace, NamespaceRemovalStrategyTrackOnly)
|
||||
HandleWatcherNamespaceRemoval(ctx, logger, component, manager, newNamespace, strategy)
|
||||
return
|
||||
}
|
||||
if !IsManagedNamespace(newNamespace.Labels) {
|
||||
|
||||
@@ -352,7 +352,7 @@ func TestHandleWatcherNamespaceAddUpdateDelete(t *testing.T) {
|
||||
t.Fatalf("expected add handler to dispatch add")
|
||||
}
|
||||
|
||||
HandleWatcherNamespaceUpdate(context.Background(), logger, "router.NSWatcher", manager, namespace, namespace)
|
||||
HandleWatcherNamespaceUpdate(context.Background(), logger, "router.NSWatcher", manager, namespace, namespace, NamespaceRemovalStrategyTrackOnly)
|
||||
if router.resyncCalls != 1 {
|
||||
t.Fatalf("expected update handler to dispatch resync")
|
||||
}
|
||||
@@ -383,6 +383,29 @@ func TestHandleWatcherNamespaceRemovalDispatch(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleWatcherNamespaceUpdateDispatchRemoval(t *testing.T) {
|
||||
manager := NewNamespaceManager()
|
||||
router := &testNamespaceSubscriber{name: "router"}
|
||||
manager.Subscribe(router)
|
||||
logger := zap.NewNop()
|
||||
oldNamespace := &corev1.Namespace{}
|
||||
oldNamespace.Name = "tenant-a"
|
||||
oldNamespace.Labels = map[string]string{ManagedNamespaceLabelKey: ManagedNamespaceLabelValue}
|
||||
newNamespace := &corev1.Namespace{}
|
||||
newNamespace.Name = "tenant-a"
|
||||
newNamespace.Labels = map[string]string{}
|
||||
manager.Upsert(NamespaceEvent{Type: NamespaceEventAdd, Name: "tenant-a", Source: NamespaceSourceWatcher})
|
||||
|
||||
HandleWatcherNamespaceUpdate(context.Background(), logger, "router.NSWatcher", manager, oldNamespace, newNamespace, NamespaceRemovalStrategyDispatchRemove)
|
||||
record, ok := manager.Get("tenant-a")
|
||||
if !ok || record.Phase != NamespacePhaseRemoved {
|
||||
t.Fatalf("expected dispatch removal on managed->unmanaged transition")
|
||||
}
|
||||
if router.removeCalls != 1 {
|
||||
t.Fatalf("expected remove subscriber to be called once on label drop")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNamespaceManagerDispatchAdd(t *testing.T) {
|
||||
manager := NewNamespaceManager()
|
||||
manager.Upsert(NamespaceEvent{Type: NamespaceEventAdd, Name: "tenant-a", Source: NamespaceSourceWatcher})
|
||||
|
||||
Reference in New Issue
Block a user