diff --git a/doc/thinking/2026-04-26-namespace-manager-step16.md b/doc/thinking/2026-04-26-namespace-manager-step16.md new file mode 100644 index 00000000..aca12c6a --- /dev/null +++ b/doc/thinking/2026-04-26-namespace-manager-step16.md @@ -0,0 +1,18 @@ +# 2026-04-26 — NamespaceManager rewrite, step 16 + +## Цель шага + +Подготовить lifecycle subscriber contract для будущего reconcile path. + +## Что меняем + +1. Расширяем `NamespaceSubscriber` методами: + - `OnNamespaceAdd()` + - `OnNamespaceRemove()` + - `OnNamespaceResync()` +2. Обновляем тестовую заглушку subscriber-а. + +## Что НЕ меняем + +- не вызываем subscriber-ов из manager; +- не подключаем contract к runtime components. \ No newline at end of file diff --git a/pkg/utils/namespace_manager.go b/pkg/utils/namespace_manager.go index ea2d4a05..a41fe15a 100644 --- a/pkg/utils/namespace_manager.go +++ b/pkg/utils/namespace_manager.go @@ -1,6 +1,7 @@ package utils import ( + "context" "sort" "sync" "time" @@ -8,6 +9,9 @@ import ( type NamespaceSubscriber interface { Name() string + OnNamespaceAdd(ctx context.Context, record NamespaceRecord) error + OnNamespaceRemove(ctx context.Context, record NamespaceRecord) error + OnNamespaceResync(ctx context.Context, record NamespaceRecord) error } type NamespaceManager interface { diff --git a/pkg/utils/namespace_manager_test.go b/pkg/utils/namespace_manager_test.go index 1b224ad3..76f0dafe 100644 --- a/pkg/utils/namespace_manager_test.go +++ b/pkg/utils/namespace_manager_test.go @@ -1,6 +1,7 @@ package utils import ( + "context" "errors" "reflect" "testing" @@ -15,6 +16,18 @@ func (s testNamespaceSubscriber) Name() string { return s.name } +func (s testNamespaceSubscriber) OnNamespaceAdd(ctx context.Context, record NamespaceRecord) error { + return nil +} + +func (s testNamespaceSubscriber) OnNamespaceRemove(ctx context.Context, record NamespaceRecord) error { + return nil +} + +func (s testNamespaceSubscriber) OnNamespaceResync(ctx context.Context, record NamespaceRecord) error { + return nil +} + func TestNamespaceManagerSnapshotAndGet(t *testing.T) { manager := NewNamespaceManager() now := time.Now().UTC()