Merge pull request #85590 from yuzhiquan/master

handle registry merge error
This commit is contained in:
Kubernetes Prow Robot 2019-12-04 08:50:57 -08:00 committed by GitHub
commit f4caa62593
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 1 deletions

View File

@ -303,7 +303,9 @@ func New(client clientset.Interface,
VolumeBinder: volumeBinder, VolumeBinder: volumeBinder,
}) })
} }
registry.Merge(options.frameworkOutOfTreeRegistry) if err := registry.Merge(options.frameworkOutOfTreeRegistry); err != nil {
return nil, err
}
snapshot := nodeinfosnapshot.NewEmptySnapshot() snapshot := nodeinfosnapshot.NewEmptySnapshot()

View File

@ -48,6 +48,7 @@ import (
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities" "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config" schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
"k8s.io/kubernetes/pkg/scheduler/core" "k8s.io/kubernetes/pkg/scheduler/core"
frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins"
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1" framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache" internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
fakecache "k8s.io/kubernetes/pkg/scheduler/internal/cache/fake" fakecache "k8s.io/kubernetes/pkg/scheduler/internal/cache/fake"
@ -202,6 +203,32 @@ func TestSchedulerCreation(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("Failed to create scheduler: %v", err) t.Fatalf("Failed to create scheduler: %v", err)
} }
// Test case for when a plugin name in frameworkOutOfTreeRegistry already exist in defaultRegistry.
fakeFrameworkPluginName := ""
for name := range frameworkplugins.NewDefaultRegistry(&frameworkplugins.RegistryArgs{}) {
fakeFrameworkPluginName = name
break
}
registryFake := map[string]framework.PluginFactory{
fakeFrameworkPluginName: func(_ *runtime.Unknown, fh framework.FrameworkHandle) (framework.Plugin, error) {
return nil, nil
},
}
_, err = New(client,
informerFactory,
NewPodInformer(client, 0),
eventBroadcaster.NewRecorder(scheme.Scheme, "scheduler"),
stopCh,
WithAlgorithmSource(schedulerapi.SchedulerAlgorithmSource{Provider: &testSource}),
WithPodInitialBackoffSeconds(1),
WithPodMaxBackoffSeconds(10),
WithFrameworkOutOfTreeRegistry(registryFake),
)
if err == nil {
t.Fatalf("Create scheduler should fail")
}
} }
func TestScheduler(t *testing.T) { func TestScheduler(t *testing.T) {