layer1: run managed namespace watchers
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
# 2026-04-26 — NamespaceManager rewrite, step 49
|
||||
|
||||
## Цель шага
|
||||
|
||||
Собрать `prepare + start` managed namespace watcher в один общий entrypoint.
|
||||
|
||||
## Что меняем
|
||||
|
||||
1. Добавляем `RunManagedNamespaceWatcher()`.
|
||||
2. Helper:
|
||||
- готовит manager;
|
||||
- строит handlers;
|
||||
- запускает managed namespace informer.
|
||||
3. Три `StartNSWatcher()` переходят на новый entrypoint.
|
||||
4. Добавляем минимальный unit test с fake client.
|
||||
|
||||
## Что НЕ меняем
|
||||
|
||||
- не меняем subscriber logic;
|
||||
- не меняем selector/strategy semantics.
|
||||
@@ -25,9 +25,8 @@ func StartNSWatcher(
|
||||
pkgw *packageWatcher,
|
||||
mgr manager.Interface,
|
||||
) {
|
||||
_, handlers, err := utils.PrepareManagedNamespaceWatcher(ctx, logger, "buildermgr.NSWatcher", utils.DefaultNSResolver().Snapshot(), utils.NamespaceRemovalStrategyTrackOnly, NewNamespaceSubscriber(envw, pkgw, mgr))
|
||||
_, err := utils.RunManagedNamespaceWatcher(ctx, logger, "buildermgr.NSWatcher", kubeClient, mgr, utils.DefaultNSResolver().Snapshot(), utils.NamespaceRemovalStrategyTrackOnly, NewNamespaceSubscriber(envw, pkgw, mgr))
|
||||
if err != nil {
|
||||
logger.Error("buildermgr.NSWatcher: BootstrapAndDispatch failed", zap.Error(err))
|
||||
}
|
||||
utils.StartManagedNamespaceWatcher(ctx, logger, "buildermgr.NSWatcher", kubeClient, mgr, handlers)
|
||||
}
|
||||
|
||||
@@ -87,11 +87,10 @@ func StartNSWatcher(
|
||||
executorTypes map[fv1.ExecutorType]executortype.ExecutorType,
|
||||
mgr manager.Interface,
|
||||
) {
|
||||
_, handlers, err := utils.PrepareManagedNamespaceWatcher(ctx, logger, "multitenant.NSWatcher", utils.DefaultNSResolver().Snapshot(), utils.NamespaceRemovalStrategyTrackOnly, NewNamespaceSubscriber(logger, kubernetesClient, executorTypes, mgr))
|
||||
_, err := utils.RunManagedNamespaceWatcher(ctx, logger, "multitenant.NSWatcher", kubernetesClient, mgr, utils.DefaultNSResolver().Snapshot(), utils.NamespaceRemovalStrategyTrackOnly, NewNamespaceSubscriber(logger, kubernetesClient, executorTypes, mgr))
|
||||
if err != nil {
|
||||
logger.Error("multitenant.NSWatcher: BootstrapAndDispatch failed", zap.Error(err))
|
||||
}
|
||||
utils.StartManagedNamespaceWatcher(ctx, logger, "multitenant.NSWatcher", kubernetesClient, mgr, handlers)
|
||||
}
|
||||
|
||||
// registerNamespace calls AddNamespace on every executor type for the given namespace.
|
||||
|
||||
@@ -25,9 +25,8 @@ func StartNSWatcher(
|
||||
ts *HTTPTriggerSet,
|
||||
mgr manager.Interface,
|
||||
) {
|
||||
_, handlers, err := utils.PrepareManagedNamespaceWatcher(ctx, logger, "router.NSWatcher", utils.DefaultNSResolver().Snapshot(), utils.NamespaceRemovalStrategyTrackOnly, NewNamespaceSubscriber(ts, mgr))
|
||||
_, err := utils.RunManagedNamespaceWatcher(ctx, logger, "router.NSWatcher", kubeClient, mgr, utils.DefaultNSResolver().Snapshot(), utils.NamespaceRemovalStrategyTrackOnly, NewNamespaceSubscriber(ts, mgr))
|
||||
if err != nil {
|
||||
logger.Error("router.NSWatcher: BootstrapAndDispatch failed", zap.Error(err))
|
||||
}
|
||||
utils.StartManagedNamespaceWatcher(ctx, logger, "router.NSWatcher", kubeClient, mgr, handlers)
|
||||
}
|
||||
|
||||
@@ -117,6 +117,12 @@ func PrepareManagedNamespaceWatcher(ctx context.Context, logger *zap.Logger, com
|
||||
return manager, handlers, err
|
||||
}
|
||||
|
||||
func RunManagedNamespaceWatcher(ctx context.Context, logger *zap.Logger, component string, kubeClient kubernetes.Interface, mgr managerPkg.Interface, namespaces []string, removalStrategy NamespaceRemovalStrategy, subscriber NamespaceSubscriber) (NamespaceManager, error) {
|
||||
manager, handlers, err := PrepareManagedNamespaceWatcher(ctx, logger, component, namespaces, removalStrategy, subscriber)
|
||||
StartManagedNamespaceWatcher(ctx, logger, component, kubeClient, mgr, handlers)
|
||||
return manager, err
|
||||
}
|
||||
|
||||
func LogNamespaceManagerSummary(logger *zap.Logger, message string, summary NamespaceManagerSummary) {
|
||||
if logger == nil {
|
||||
return
|
||||
|
||||
@@ -9,7 +9,10 @@ import (
|
||||
|
||||
"go.uber.org/zap"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
k8sfake "k8s.io/client-go/kubernetes/fake"
|
||||
k8sCache "k8s.io/client-go/tools/cache"
|
||||
|
||||
managerPkg "github.com/fission/fission/pkg/utils/manager"
|
||||
)
|
||||
|
||||
type testNamespaceSubscriber struct {
|
||||
@@ -458,6 +461,20 @@ func TestPrepareManagedNamespaceWatcher(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRunManagedNamespaceWatcher(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
router := &testNamespaceSubscriber{name: "router"}
|
||||
logger := zap.NewNop()
|
||||
manager, err := RunManagedNamespaceWatcher(ctx, logger, "router.NSWatcher", k8sfake.NewSimpleClientset(), managerPkg.New(), []string{"tenant-a"}, NamespaceRemovalStrategyTrackOnly, router)
|
||||
if err != nil {
|
||||
t.Fatalf("expected managed namespace watcher run success: %v", err)
|
||||
}
|
||||
if !reflect.DeepEqual([]string{"tenant-a"}, manager.Snapshot()) {
|
||||
t.Fatalf("expected watcher manager snapshot to contain bootstrapped namespace")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNamespaceManagerSummary(t *testing.T) {
|
||||
manager := NewNamespaceManager()
|
||||
manager.Upsert(NamespaceEvent{Type: NamespaceEventAdd, Name: "tenant-a", Source: NamespaceSourceWatcher})
|
||||
|
||||
Reference in New Issue
Block a user