layer1: add executor namespace subscriber step 25
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
# 2026-04-26 — NamespaceManager rewrite, step 25
|
||||
|
||||
## Цель шага
|
||||
|
||||
Добавить runtime adapter для `executor/multitenant` поверх уже выделенного helper-а.
|
||||
|
||||
## Что меняем
|
||||
|
||||
1. Добавляем executor namespace subscriber.
|
||||
2. `add/resync` path переиспользует `registerNamespace()`.
|
||||
3. Добавляем unit test на вызов executor type-ов.
|
||||
|
||||
## Что НЕ меняем
|
||||
|
||||
- не подключаем subscriber к watcher-у;
|
||||
- не меняем remove path;
|
||||
- не меняем внешний API watcher-а.
|
||||
@@ -0,0 +1,32 @@
|
||||
package multitenant
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
|
||||
fv1 "github.com/fission/fission/pkg/apis/core/v1"
|
||||
"github.com/fission/fission/pkg/executor/executortype"
|
||||
"github.com/fission/fission/pkg/utils"
|
||||
"github.com/fission/fission/pkg/utils/manager"
|
||||
)
|
||||
|
||||
func NewNamespaceSubscriber(
|
||||
logger *zap.Logger,
|
||||
kubernetesClient kubernetes.Interface,
|
||||
executorTypes map[fv1.ExecutorType]executortype.ExecutorType,
|
||||
mgr manager.Interface,
|
||||
) utils.NamespaceSubscriber {
|
||||
return utils.NamespaceSubscriberFuncs{
|
||||
SubscriberName: "executor",
|
||||
AddFunc: func(ctx context.Context, record utils.NamespaceRecord) error {
|
||||
registerNamespace(ctx, logger, kubernetesClient, record.Name, executorTypes, mgr)
|
||||
return nil
|
||||
},
|
||||
ResyncFunc: func(ctx context.Context, record utils.NamespaceRecord) error {
|
||||
registerNamespace(ctx, logger, kubernetesClient, record.Name, executorTypes, mgr)
|
||||
return nil
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package multitenant
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"go.uber.org/zap"
|
||||
k8sfake "k8s.io/client-go/kubernetes/fake"
|
||||
|
||||
fv1 "github.com/fission/fission/pkg/apis/core/v1"
|
||||
"github.com/fission/fission/pkg/executor/executortype"
|
||||
"github.com/fission/fission/pkg/utils"
|
||||
)
|
||||
|
||||
func TestNewNamespaceSubscriberAddAndResync(t *testing.T) {
|
||||
poolmgr := &fakeExecutorType{}
|
||||
subscriber := NewNamespaceSubscriber(zap.NewNop(), k8sfake.NewSimpleClientset(), map[fv1.ExecutorType]executortype.ExecutorType{
|
||||
fv1.ExecutorTypePoolmgr: poolmgr,
|
||||
}, nil)
|
||||
record := utils.NamespaceRecord{Name: "tenant-executor-b"}
|
||||
|
||||
if subscriber.Name() != "executor" {
|
||||
t.Fatalf("expected executor subscriber name")
|
||||
}
|
||||
if err := subscriber.OnNamespaceAdd(context.Background(), record); err != nil {
|
||||
t.Fatalf("expected add to succeed: %v", err)
|
||||
}
|
||||
if err := subscriber.OnNamespaceResync(context.Background(), record); err != nil {
|
||||
t.Fatalf("expected resync to succeed: %v", err)
|
||||
}
|
||||
if poolmgr.addCalls != 2 {
|
||||
t.Fatalf("expected executor type to receive add and resync calls")
|
||||
}
|
||||
if poolmgr.lastNamespace != "tenant-executor-b" {
|
||||
t.Fatalf("expected namespace to be forwarded to executor type")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user