Merge pull request #92010 from Huang-Wei/sched-fwk-expose-EventRecorder

Expose EventRecorder to scheduler FrameworkHandle
This commit is contained in:
Kubernetes Prow Robot 2020-06-10 22:44:12 -07:00 committed by GitHub
commit 6bb7e8ab83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 23 additions and 3 deletions

View File

@ -38,7 +38,6 @@ import (
policylisters "k8s.io/client-go/listers/policy/v1beta1"
"k8s.io/client-go/tools/cache"
"k8s.io/klog/v2"
kubefeatures "k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/scheduler/algorithmprovider"
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"

View File

@ -34,6 +34,7 @@ go_library(
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//staging/src/k8s.io/client-go/informers:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/tools/events:go_default_library",
"//staging/src/k8s.io/component-base/metrics:go_default_library",
"//staging/src/k8s.io/kube-scheduler/config/v1beta1:go_default_library",
"//staging/src/k8s.io/kube-scheduler/extender/v1:go_default_library",

View File

@ -28,6 +28,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/informers"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/events"
"k8s.io/klog/v2"
"k8s.io/kube-scheduler/config/v1beta1"
"k8s.io/kubernetes/pkg/scheduler/apis/config"
@ -79,6 +80,7 @@ type framework struct {
permitPlugins []PermitPlugin
clientSet clientset.Interface
eventRecorder events.EventRecorder
informerFactory informers.SharedInformerFactory
metricsRecorder *metricsRecorder
@ -120,6 +122,7 @@ func (f *framework) getExtensionPoints(plugins *config.Plugins) []extensionPoint
type frameworkOptions struct {
clientSet clientset.Interface
eventRecorder events.EventRecorder
informerFactory informers.SharedInformerFactory
snapshotSharedLister SharedLister
metricsRecorder *metricsRecorder
@ -138,6 +141,13 @@ func WithClientSet(clientSet clientset.Interface) Option {
}
}
// WithEventRecorder sets clientSet for the scheduling framework.
func WithEventRecorder(recorder events.EventRecorder) Option {
return func(o *frameworkOptions) {
o.eventRecorder = recorder
}
}
// WithInformerFactory sets informer factory for the scheduling framework.
func WithInformerFactory(informerFactory informers.SharedInformerFactory) Option {
return func(o *frameworkOptions) {
@ -214,6 +224,7 @@ func NewFramework(r Registry, plugins *config.Plugins, args []config.PluginConfi
pluginNameToWeightMap: make(map[string]int),
waitingPods: newWaitingPodsMap(),
clientSet: options.clientSet,
eventRecorder: options.eventRecorder,
informerFactory: options.informerFactory,
metricsRecorder: options.metricsRecorder,
runAllFilters: options.runAllFilters,
@ -962,6 +973,11 @@ func (f *framework) ClientSet() clientset.Interface {
return f.clientSet
}
// EventRecorder returns an event recorder.
func (f *framework) EventRecorder() events.EventRecorder {
return f.eventRecorder
}
// SharedInformerFactory returns a shared informer factory.
func (f *framework) SharedInformerFactory() informers.SharedInformerFactory {
return f.informerFactory

View File

@ -29,6 +29,7 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/informers"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/events"
"k8s.io/kubernetes/pkg/scheduler/apis/config"
)
@ -512,6 +513,9 @@ type FrameworkHandle interface {
// ClientSet returns a kubernetes clientSet.
ClientSet() clientset.Interface
// EventRecorder returns an event recorder.
EventRecorder() events.EventRecorder
SharedInformerFactory() informers.SharedInformerFactory
// TODO: unroll the wrapped interfaces to FrameworkHandle.

View File

@ -44,11 +44,11 @@ type Profile struct {
// NewProfile builds a Profile for the given configuration.
func NewProfile(cfg config.KubeSchedulerProfile, frameworkFact FrameworkFactory, recorderFact RecorderFactory,
opts ...framework.Option) (*Profile, error) {
f, err := frameworkFact(cfg, opts...)
r := recorderFact(cfg.SchedulerName)
f, err := frameworkFact(cfg, append(opts, framework.WithEventRecorder(r))...)
if err != nil {
return nil, err
}
r := recorderFact(cfg.SchedulerName)
return &Profile{
Framework: f,
Recorder: r,