Add VolumeBinder to FrameworkHandle interface
This commit is contained in:
		@@ -122,6 +122,7 @@ func (c *Configurator) create(extenders []algorithm.SchedulerExtender) (*Schedul
 | 
			
		||||
		framework.WithInformerFactory(c.informerFactory),
 | 
			
		||||
		framework.WithSnapshotSharedLister(c.nodeInfoSnapshot),
 | 
			
		||||
		framework.WithRunAllFilters(c.alwaysCheckAllPredicates),
 | 
			
		||||
		framework.WithVolumeBinder(c.volumeBinder),
 | 
			
		||||
	)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		klog.Fatalf("error initializing the scheduling framework: %v", err)
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ go_library(
 | 
			
		||||
        "//pkg/scheduler/metrics:go_default_library",
 | 
			
		||||
        "//pkg/scheduler/nodeinfo:go_default_library",
 | 
			
		||||
        "//pkg/scheduler/util:go_default_library",
 | 
			
		||||
        "//pkg/scheduler/volumebinder:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/scheduler/metrics"
 | 
			
		||||
	schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
 | 
			
		||||
	schedutil "k8s.io/kubernetes/pkg/scheduler/util"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/scheduler/volumebinder"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
@@ -76,6 +77,7 @@ type framework struct {
 | 
			
		||||
 | 
			
		||||
	clientSet       clientset.Interface
 | 
			
		||||
	informerFactory informers.SharedInformerFactory
 | 
			
		||||
	volumeBinder    *volumebinder.VolumeBinder
 | 
			
		||||
 | 
			
		||||
	metricsRecorder *metricsRecorder
 | 
			
		||||
 | 
			
		||||
@@ -116,6 +118,7 @@ type frameworkOptions struct {
 | 
			
		||||
	informerFactory      informers.SharedInformerFactory
 | 
			
		||||
	snapshotSharedLister schedulerlisters.SharedLister
 | 
			
		||||
	metricsRecorder      *metricsRecorder
 | 
			
		||||
	volumeBinder         *volumebinder.VolumeBinder
 | 
			
		||||
	runAllFilters        bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -158,6 +161,13 @@ func withMetricsRecorder(recorder *metricsRecorder) Option {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// WithVolumeBinder sets volume binder for the scheduling framework.
 | 
			
		||||
func WithVolumeBinder(binder *volumebinder.VolumeBinder) Option {
 | 
			
		||||
	return func(o *frameworkOptions) {
 | 
			
		||||
		o.volumeBinder = binder
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var defaultFrameworkOptions = frameworkOptions{
 | 
			
		||||
	metricsRecorder: newMetricsRecorder(1000, time.Second),
 | 
			
		||||
}
 | 
			
		||||
@@ -178,6 +188,7 @@ func NewFramework(r Registry, plugins *config.Plugins, args []config.PluginConfi
 | 
			
		||||
		waitingPods:           newWaitingPodsMap(),
 | 
			
		||||
		clientSet:             options.clientSet,
 | 
			
		||||
		informerFactory:       options.informerFactory,
 | 
			
		||||
		volumeBinder:          options.volumeBinder,
 | 
			
		||||
		metricsRecorder:       options.metricsRecorder,
 | 
			
		||||
		runAllFilters:         options.runAllFilters,
 | 
			
		||||
	}
 | 
			
		||||
@@ -893,6 +904,11 @@ func (f *framework) SharedInformerFactory() informers.SharedInformerFactory {
 | 
			
		||||
	return f.informerFactory
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// VolumeBinder returns the volume binder used by scheduler.
 | 
			
		||||
func (f *framework) VolumeBinder() *volumebinder.VolumeBinder {
 | 
			
		||||
	return f.volumeBinder
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *framework) pluginsNeeded(plugins *config.Plugins) map[string]config.Plugin {
 | 
			
		||||
	pgMap := make(map[string]config.Plugin)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/scheduler/apis/config"
 | 
			
		||||
	schedulerlisters "k8s.io/kubernetes/pkg/scheduler/listers"
 | 
			
		||||
	schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/scheduler/volumebinder"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// NodeScoreList declares a list of nodes and their scores.
 | 
			
		||||
@@ -483,4 +484,7 @@ type FrameworkHandle interface {
 | 
			
		||||
	ClientSet() clientset.Interface
 | 
			
		||||
 | 
			
		||||
	SharedInformerFactory() informers.SharedInformerFactory
 | 
			
		||||
 | 
			
		||||
	// VolumeBinder returns the volume binder used by scheduler.
 | 
			
		||||
	VolumeBinder() *volumebinder.VolumeBinder
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +41,7 @@ go_test(
 | 
			
		||||
        "//pkg/scheduler/nodeinfo:go_default_library",
 | 
			
		||||
        "//pkg/scheduler/nodeinfo/snapshot:go_default_library",
 | 
			
		||||
        "//pkg/scheduler/util:go_default_library",
 | 
			
		||||
        "//pkg/scheduler/volumebinder:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,7 @@ import (
 | 
			
		||||
	schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
 | 
			
		||||
	nodeinfosnapshot "k8s.io/kubernetes/pkg/scheduler/nodeinfo/snapshot"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/scheduler/util"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/scheduler/volumebinder"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const queueMetricMetadata = `
 | 
			
		||||
@@ -258,6 +259,10 @@ func (*fakeFramework) SnapshotSharedLister() schedulerlisters.SharedLister {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (*fakeFramework) VolumeBinder() *volumebinder.VolumeBinder {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestPriorityQueue_AddWithReversePriorityLessFunc(t *testing.T) {
 | 
			
		||||
	q := createAndRunPriorityQueue(&fakeFramework{})
 | 
			
		||||
	if err := q.Add(&medPriorityPod); err != nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user