layer1: add default watcher config helper
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
# 2026-04-26 — NamespaceManager rewrite, step 51
|
||||||
|
|
||||||
|
## Цель шага
|
||||||
|
|
||||||
|
Убрать из call sites повторение стандартного config для managed namespace watcher-а.
|
||||||
|
|
||||||
|
## Что меняем
|
||||||
|
|
||||||
|
1. Добавляем `NewDefaultManagedNamespaceWatcherConfig()`.
|
||||||
|
2. Helper подставляет:
|
||||||
|
- `DefaultNSResolver().Snapshot()`;
|
||||||
|
- `track-only` как default removal strategy.
|
||||||
|
3. `buildermgr`, `router`, `executor/multitenant` используют helper.
|
||||||
|
|
||||||
|
## Что НЕ меняем
|
||||||
|
|
||||||
|
- не меняем runtime semantics;
|
||||||
|
- не меняем subscriber logic.
|
||||||
@@ -25,12 +25,7 @@ func StartNSWatcher(
|
|||||||
pkgw *packageWatcher,
|
pkgw *packageWatcher,
|
||||||
mgr manager.Interface,
|
mgr manager.Interface,
|
||||||
) {
|
) {
|
||||||
_, err := utils.RunManagedNamespaceWatcher(ctx, logger, kubeClient, mgr, utils.ManagedNamespaceWatcherConfig{
|
_, err := utils.RunManagedNamespaceWatcher(ctx, logger, kubeClient, mgr, utils.NewDefaultManagedNamespaceWatcherConfig("buildermgr.NSWatcher", NewNamespaceSubscriber(envw, pkgw, mgr)))
|
||||||
Component: "buildermgr.NSWatcher",
|
|
||||||
Namespaces: utils.DefaultNSResolver().Snapshot(),
|
|
||||||
RemovalStrategy: utils.NamespaceRemovalStrategyTrackOnly,
|
|
||||||
Subscriber: NewNamespaceSubscriber(envw, pkgw, mgr),
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("buildermgr.NSWatcher: BootstrapAndDispatch failed", zap.Error(err))
|
logger.Error("buildermgr.NSWatcher: BootstrapAndDispatch failed", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,12 +86,7 @@ func StartNSWatcher(
|
|||||||
executorTypes map[fv1.ExecutorType]executortype.ExecutorType,
|
executorTypes map[fv1.ExecutorType]executortype.ExecutorType,
|
||||||
mgr manager.Interface,
|
mgr manager.Interface,
|
||||||
) {
|
) {
|
||||||
_, err := utils.RunManagedNamespaceWatcher(ctx, logger, kubernetesClient, mgr, utils.ManagedNamespaceWatcherConfig{
|
_, err := utils.RunManagedNamespaceWatcher(ctx, logger, kubernetesClient, mgr, utils.NewDefaultManagedNamespaceWatcherConfig("multitenant.NSWatcher", NewNamespaceSubscriber(logger, kubernetesClient, executorTypes, mgr)))
|
||||||
Component: "multitenant.NSWatcher",
|
|
||||||
Namespaces: utils.DefaultNSResolver().Snapshot(),
|
|
||||||
RemovalStrategy: utils.NamespaceRemovalStrategyTrackOnly,
|
|
||||||
Subscriber: NewNamespaceSubscriber(logger, kubernetesClient, executorTypes, mgr),
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("multitenant.NSWatcher: BootstrapAndDispatch failed", zap.Error(err))
|
logger.Error("multitenant.NSWatcher: BootstrapAndDispatch failed", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,12 +24,7 @@ func StartNSWatcher(
|
|||||||
ts *HTTPTriggerSet,
|
ts *HTTPTriggerSet,
|
||||||
mgr manager.Interface,
|
mgr manager.Interface,
|
||||||
) {
|
) {
|
||||||
_, err := utils.RunManagedNamespaceWatcher(ctx, logger, kubeClient, mgr, utils.ManagedNamespaceWatcherConfig{
|
_, err := utils.RunManagedNamespaceWatcher(ctx, logger, kubeClient, mgr, utils.NewDefaultManagedNamespaceWatcherConfig("router.NSWatcher", NewNamespaceSubscriber(ts, mgr)))
|
||||||
Component: "router.NSWatcher",
|
|
||||||
Namespaces: utils.DefaultNSResolver().Snapshot(),
|
|
||||||
RemovalStrategy: utils.NamespaceRemovalStrategyTrackOnly,
|
|
||||||
Subscriber: NewNamespaceSubscriber(ts, mgr),
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("router.NSWatcher: BootstrapAndDispatch failed", zap.Error(err))
|
logger.Error("router.NSWatcher: BootstrapAndDispatch failed", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,6 +110,15 @@ func NewWatcherNamespaceManager(ctx context.Context, namespaces []string, source
|
|||||||
return manager, err
|
return manager, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewDefaultManagedNamespaceWatcherConfig(component string, subscriber NamespaceSubscriber) ManagedNamespaceWatcherConfig {
|
||||||
|
return ManagedNamespaceWatcherConfig{
|
||||||
|
Component: component,
|
||||||
|
Namespaces: DefaultNSResolver().Snapshot(),
|
||||||
|
RemovalStrategy: NamespaceRemovalStrategyTrackOnly,
|
||||||
|
Subscriber: subscriber,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func PrepareManagedNamespaceWatcher(ctx context.Context, logger *zap.Logger, config ManagedNamespaceWatcherConfig) (NamespaceManager, k8sCache.ResourceEventHandlerFuncs, error) {
|
func PrepareManagedNamespaceWatcher(ctx context.Context, logger *zap.Logger, config ManagedNamespaceWatcherConfig) (NamespaceManager, k8sCache.ResourceEventHandlerFuncs, error) {
|
||||||
strategy := config.RemovalStrategy
|
strategy := config.RemovalStrategy
|
||||||
if strategy == "" {
|
if strategy == "" {
|
||||||
|
|||||||
@@ -485,6 +485,30 @@ func TestRunManagedNamespaceWatcher(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNewDefaultManagedNamespaceWatcherConfig(t *testing.T) {
|
||||||
|
resolver := DefaultNSResolver()
|
||||||
|
original := resolver.FissionResourceNS
|
||||||
|
resolver.FissionResourceNS = map[string]string{"tenant-a": "tenant-a"}
|
||||||
|
defer func() {
|
||||||
|
resolver.FissionResourceNS = original
|
||||||
|
}()
|
||||||
|
|
||||||
|
router := &testNamespaceSubscriber{name: "router"}
|
||||||
|
config := NewDefaultManagedNamespaceWatcherConfig("router.NSWatcher", router)
|
||||||
|
if config.Component != "router.NSWatcher" {
|
||||||
|
t.Fatalf("expected component name to be preserved")
|
||||||
|
}
|
||||||
|
if config.RemovalStrategy != NamespaceRemovalStrategyTrackOnly {
|
||||||
|
t.Fatalf("expected default removal strategy track-only")
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual([]string{"tenant-a"}, config.Namespaces) {
|
||||||
|
t.Fatalf("expected namespaces from resolver snapshot")
|
||||||
|
}
|
||||||
|
if config.Subscriber != router {
|
||||||
|
t.Fatalf("expected subscriber to be preserved")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestPrepareManagedNamespaceWatcherDefaultsToTrackOnly(t *testing.T) {
|
func TestPrepareManagedNamespaceWatcherDefaultsToTrackOnly(t *testing.T) {
|
||||||
router := &testNamespaceSubscriber{name: "router"}
|
router := &testNamespaceSubscriber{name: "router"}
|
||||||
logger := zap.NewNop()
|
logger := zap.NewNop()
|
||||||
|
|||||||
Reference in New Issue
Block a user