layer1: checkpoint namespace manager runtime series

This commit is contained in:
Naeel
2026-04-26 11:44:36 +03:00
parent 6e037a506d
commit 90924cdec7
12 changed files with 32 additions and 26 deletions
+1 -1
View File
@@ -40,4 +40,4 @@ func registerBuilderNamespace(ctx context.Context, namespace string, envw builde
if pkgw != nil {
pkgw.AddNamespace(ctx, namespace, mgr)
}
}
}
+1 -1
View File
@@ -49,4 +49,4 @@ func TestNewNamespaceSubscriberAddAndResync(t *testing.T) {
if envw.lastNamespace != "tenant-builder-a" || pkgw.lastNamespace != "tenant-builder-a" {
t.Fatalf("expected namespace to be forwarded to both watchers")
}
}
}
@@ -29,4 +29,4 @@ func NewNamespaceSubscriber(
return nil
},
}
}
}
@@ -34,4 +34,4 @@ func TestNewNamespaceSubscriberAddAndResync(t *testing.T) {
if poolmgr.lastNamespace != "tenant-executor-b" {
t.Fatalf("expected namespace to be forwarded to executor type")
}
}
}
+1
View File
@@ -71,6 +71,7 @@ import (
"github.com/fission/fission/pkg/utils"
"github.com/fission/fission/pkg/utils/manager"
)
// StartNSWatcher registers a Kubernetes Namespace Informer that reacts immediately
// when a Namespace with label fission.io/managed=true is created or relabeled.
//
+14 -10
View File
@@ -21,21 +21,25 @@ type fakeExecutorType struct {
}
func (f *fakeExecutorType) Run(context.Context, manager.Interface) {}
func (f *fakeExecutorType) GetTypeName(context.Context) fv1.ExecutorType { return fv1.ExecutorTypePoolmgr }
func (f *fakeExecutorType) GetTypeName(context.Context) fv1.ExecutorType {
return fv1.ExecutorTypePoolmgr
}
func (f *fakeExecutorType) GetFuncSvc(context.Context, *fv1.Function) (*fscache.FuncSvc, error) {
return nil, nil
}
func (f *fakeExecutorType) GetFuncSvcFromCache(context.Context, *fv1.Function) (*fscache.FuncSvc, error) {
return nil, nil
}
func (f *fakeExecutorType) DumpDebugInfo(context.Context) error { return nil }
func (f *fakeExecutorType) DeleteFuncSvcFromCache(context.Context, *fscache.FuncSvc) {}
func (f *fakeExecutorType) TapService(context.Context, string) error { return nil }
func (f *fakeExecutorType) UnTapService(context.Context, *metav1.ObjectMeta, string) {}
func (f *fakeExecutorType) DumpDebugInfo(context.Context) error { return nil }
func (f *fakeExecutorType) DeleteFuncSvcFromCache(context.Context, *fscache.FuncSvc) {}
func (f *fakeExecutorType) TapService(context.Context, string) error { return nil }
func (f *fakeExecutorType) UnTapService(context.Context, *metav1.ObjectMeta, string) {}
func (f *fakeExecutorType) MarkSpecializationFailure(context.Context, *metav1.ObjectMeta) {}
func (f *fakeExecutorType) IsValid(context.Context, *fscache.FuncSvc) bool { return true }
func (f *fakeExecutorType) RefreshFuncPods(context.Context, *zap.Logger, fv1.Function) error { return nil }
func (f *fakeExecutorType) AdoptExistingResources(context.Context) {}
func (f *fakeExecutorType) IsValid(context.Context, *fscache.FuncSvc) bool { return true }
func (f *fakeExecutorType) RefreshFuncPods(context.Context, *zap.Logger, fv1.Function) error {
return nil
}
func (f *fakeExecutorType) AdoptExistingResources(context.Context) {}
func (f *fakeExecutorType) CleanupOldExecutorObjects(context.Context) {}
func (f *fakeExecutorType) AddNamespace(ctx context.Context, ns string, mgr manager.Interface) error {
f.addCalls++
@@ -62,7 +66,7 @@ func TestRegisterExecutorTypes(t *testing.T) {
func TestRegisterExecutorTypesAggregatesErrors(t *testing.T) {
err := registerExecutorTypes(context.Background(), zap.NewNop(), "tenant-executor-a", map[fv1.ExecutorType]executortype.ExecutorType{
fv1.ExecutorTypePoolmgr: &fakeExecutorType{addErr: errors.New("poolmgr failed")},
fv1.ExecutorTypePoolmgr: &fakeExecutorType{addErr: errors.New("poolmgr failed")},
fv1.ExecutorTypeContainer: &fakeExecutorType{},
}, nil)
if err == nil {
@@ -71,4 +75,4 @@ func TestRegisterExecutorTypesAggregatesErrors(t *testing.T) {
if err.Error() != "poolmgr failed" {
t.Fatalf("unexpected error: %v", err)
}
}
}
+1 -1
View File
@@ -28,4 +28,4 @@ func registerRouterNamespace(ctx context.Context, namespace string, ts routerNam
return nil
}
return ts.AddNamespace(ctx, namespace, mgr)
}
}
+1 -1
View File
@@ -49,4 +49,4 @@ func TestRegisterRouterNamespacePropagatesError(t *testing.T) {
if err == nil || err.Error() != "add failed" {
t.Fatalf("expected router add error to be propagated, got %v", err)
}
}
}
+1
View File
@@ -14,6 +14,7 @@ import (
"github.com/fission/fission/pkg/utils"
"github.com/fission/fission/pkg/utils/manager"
)
// StartNSWatcher registers a Kubernetes Namespace Informer for the router.
// Whenever a Namespace with label fission.io/managed=true appears (or is relabeled),
// the router immediately subscribes to HTTPTriggers and Functions in that namespace.
+4 -4
View File
@@ -25,10 +25,10 @@ type NamespaceSubscriber interface {
}
type NamespaceSubscriberFuncs struct {
SubscriberName string
AddFunc func(ctx context.Context, record NamespaceRecord) error
RemoveFunc func(ctx context.Context, record NamespaceRecord) error
ResyncFunc func(ctx context.Context, record NamespaceRecord) error
SubscriberName string
AddFunc func(ctx context.Context, record NamespaceRecord) error
RemoveFunc func(ctx context.Context, record NamespaceRecord) error
ResyncFunc func(ctx context.Context, record NamespaceRecord) error
}
func (s NamespaceSubscriberFuncs) Name() string {
+1 -1
View File
@@ -44,7 +44,7 @@ const (
type NamespaceRemovalStrategy string
const (
NamespaceRemovalStrategyTrackOnly NamespaceRemovalStrategy = "track-only"
NamespaceRemovalStrategyTrackOnly NamespaceRemovalStrategy = "track-only"
NamespaceRemovalStrategyDispatchRemove NamespaceRemovalStrategy = "dispatch-remove"
)
+5 -5
View File
@@ -16,11 +16,11 @@ import (
)
type testNamespaceSubscriber struct {
name string
addErr error
removeErr error
resyncErr error
addCalls int
name string
addErr error
removeErr error
resyncErr error
addCalls int
removeCalls int
resyncCalls int
}