diff --git a/pkg/scheduler/framework/plugins/nodeaffinity/node_affinity.go b/pkg/scheduler/framework/plugins/nodeaffinity/node_affinity.go index 032ba237899..4a4c416ca86 100644 --- a/pkg/scheduler/framework/plugins/nodeaffinity/node_affinity.go +++ b/pkg/scheduler/framework/plugins/nodeaffinity/node_affinity.go @@ -38,6 +38,7 @@ type NodeAffinity struct { var _ framework.FilterPlugin = &NodeAffinity{} var _ framework.ScorePlugin = &NodeAffinity{} +var _ framework.EnqueueExtensions = &NodeAffinity{} const ( // Name is the name of the plugin used in the plugin registry and configurations. @@ -70,6 +71,14 @@ func (s *preFilterState) Clone() framework.StateData { return s } +// EventsToRegister returns the possible events that may make a Pod +// failed by this plugin schedulable. +func (pl *NodeAffinity) EventsToRegister() []framework.ClusterEvent { + return []framework.ClusterEvent{ + {Resource: framework.Node, ActionType: framework.Add | framework.UpdateNodeLabel}, + } +} + // PreFilter builds and writes cycle state used by Filter. func (pl *NodeAffinity) PreFilter(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod) *framework.Status { state := &preFilterState{requiredNodeSelectorAndAffinity: nodeaffinity.GetRequiredNodeAffinity(pod)}