diff --git a/pkg/noderesourcetopology/filter.go b/pkg/noderesourcetopology/filter.go index b0dbeb324..5853cffce 100644 --- a/pkg/noderesourcetopology/filter.go +++ b/pkg/noderesourcetopology/filter.go @@ -180,6 +180,11 @@ func singleNUMAPodLevelHandler(lh logr.Logger, pod *v1.Pod, zones topologyv1alph return nil } +func rejectNonSingleNUMANodeHandler(lh logr.Logger, _ *v1.Pod, _ topologyv1alpha2.ZoneList, nodeInfo *framework.NodeInfo) *framework.Status { + lh.Info("Rejecting node because it is not configured with Single NUMA Node policy", "node", klog.KObj(nodeInfo.Node())) + return framework.NewStatus(framework.Unschedulable, "Node does not have Single NUMA Node policy") +} + // Filter Now only single-numa-node supported func (tm *TopologyMatch) Filter(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status { if nodeInfo.Node() == nil { @@ -223,14 +228,17 @@ func (tm *TopologyMatch) Filter(ctx context.Context, cycleState *framework.Cycle } func filterHandlerFromTopologyManager(conf nodeconfig.TopologyManager) filterFn { - if conf.Policy != kubeletconfig.SingleNumaNodeTopologyManagerPolicy { - return nil + if conf.Policy != kubeletconfig.SingleNumaNodeTopologyManagerPolicy && + conf.Policy != kubeletconfig.BestEffortTopologyManagerPolicy && + conf.Policy != kubeletconfig.RestrictedTopologyManagerPolicy { + return rejectNonSingleNUMANodeHandler } - if conf.Scope == kubeletconfig.PodTopologyManagerScope { + switch conf.Scope { + case kubeletconfig.PodTopologyManagerScope: return singleNUMAPodLevelHandler - } - if conf.Scope == kubeletconfig.ContainerTopologyManagerScope { + case kubeletconfig.ContainerTopologyManagerScope: return singleNUMAContainerLevelHandler + default: + return nil } - return nil // cannot happen }