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