Skip to content

Commit 77c5650

Browse files
authored
Merge pull request kubernetes#86289 from ahg-g/ahg1-metadata
Deprecate PredicateMetadata
2 parents c1d572e + 770e51c commit 77c5650

File tree

13 files changed

+38
-275
lines changed

13 files changed

+38
-275
lines changed

pkg/scheduler/algorithm/predicates/csi_volume_predicate_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -457,8 +457,7 @@ func TestCSIVolumeCountPredicate(t *testing.T) {
457457
getFakeCSIPVCLister(test.filterName, "csi-sc", test.driverNames...),
458458
getFakeCSIStorageClassLister("csi-sc", test.driverNames[0]))
459459

460-
factory := &MetadataProducerFactory{}
461-
fits, reasons, err := pred(test.newPod, factory.GetPredicateMetadata(test.newPod, nil), node)
460+
fits, reasons, err := pred(test.newPod, nil, node)
462461
if err != nil {
463462
t.Errorf("Using allocatable [%s]%s: unexpected error: %v", test.filterName, test.test, err)
464463
}

pkg/scheduler/algorithm/predicates/max_attachable_volume_predicate_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -852,8 +852,7 @@ func TestVolumeCountConflicts(t *testing.T) {
852852
getFakeStorageClassLister(test.filterName),
853853
getFakePVLister(test.filterName),
854854
getFakePVCLister(test.filterName))
855-
factory := &MetadataProducerFactory{}
856-
fits, reasons, err := pred(test.newPod, factory.GetPredicateMetadata(test.newPod, nil), node)
855+
fits, reasons, err := pred(test.newPod, nil, node)
857856
if err != nil {
858857
t.Errorf("Using allocatable [%s]%s: unexpected error: %v", test.filterName, test.test, err)
859858
}

pkg/scheduler/algorithm/predicates/metadata.go

Lines changed: 2 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,13 @@ import (
2828
"k8s.io/client-go/util/workqueue"
2929
"k8s.io/klog"
3030
priorityutil "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util"
31-
schedulerlisters "k8s.io/kubernetes/pkg/scheduler/listers"
3231
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
3332
schedutil "k8s.io/kubernetes/pkg/scheduler/util"
3433
)
3534

3635
// Metadata interface represents anything that can access a predicate metadata.
37-
type Metadata interface {
38-
ShallowCopy() Metadata
39-
AddPod(addedPod *v1.Pod, node *v1.Node) error
40-
RemovePod(deletedPod *v1.Pod, node *v1.Node) error
41-
}
42-
43-
// MetadataProducer is a function that computes predicate metadata for a given pod.
44-
type MetadataProducer func(pod *v1.Pod, sharedLister schedulerlisters.SharedLister) Metadata
36+
// DEPRECATED.
37+
type Metadata interface{}
4538

4639
// AntiAffinityTerm's topology key value used in predicate metadata
4740
type topologyPair struct {
@@ -229,49 +222,6 @@ func (m *PodAffinityMetadata) Clone() *PodAffinityMetadata {
229222
return &copy
230223
}
231224

232-
// NOTE: When new fields are added/removed or logic is changed, please make sure that
233-
// RemovePod, AddPod, and ShallowCopy functions are updated to work with the new changes.
234-
// TODO(ahg-g): remove, not use anymore.
235-
type predicateMetadata struct {
236-
}
237-
238-
// Ensure that predicateMetadata implements algorithm.Metadata.
239-
var _ Metadata = &predicateMetadata{}
240-
241-
// predicateMetadataProducer function produces predicate metadata. It is stored in a global variable below
242-
// and used to modify the return values of MetadataProducer
243-
type predicateMetadataProducer func(pm *predicateMetadata)
244-
245-
var predicateMetadataProducers = make(map[string]predicateMetadataProducer)
246-
247-
// RegisterPredicateMetadataProducer registers a MetadataProducer.
248-
func RegisterPredicateMetadataProducer(predicateName string, precomp predicateMetadataProducer) {
249-
predicateMetadataProducers[predicateName] = precomp
250-
}
251-
252-
// EmptyMetadataProducer returns a no-op MetadataProducer type.
253-
func EmptyMetadataProducer(pod *v1.Pod, sharedLister schedulerlisters.SharedLister) Metadata {
254-
return nil
255-
}
256-
257-
// MetadataProducerFactory is a factory to produce Metadata.
258-
type MetadataProducerFactory struct{}
259-
260-
// GetPredicateMetadata returns the predicateMetadata which will be used by various predicates.
261-
func (f *MetadataProducerFactory) GetPredicateMetadata(pod *v1.Pod, sharedLister schedulerlisters.SharedLister) Metadata {
262-
// If we cannot compute metadata, just return nil
263-
if pod == nil {
264-
return nil
265-
}
266-
267-
predicateMetadata := &predicateMetadata{}
268-
for predicateName, precomputeFunc := range predicateMetadataProducers {
269-
klog.V(10).Infof("Precompute: %v", predicateName)
270-
precomputeFunc(predicateMetadata)
271-
}
272-
return predicateMetadata
273-
}
274-
275225
// GetPodAffinityMetadata computes inter-pod affinity metadata.
276226
func GetPodAffinityMetadata(pod *v1.Pod, allNodes []*schedulernodeinfo.NodeInfo, havePodsWithAffinityNodes []*schedulernodeinfo.NodeInfo) (*PodAffinityMetadata, error) {
277227
// existingPodAntiAffinityMap will be used later for efficient check on existing pods' anti-affinity
@@ -460,25 +410,6 @@ func (m *PodTopologySpreadMetadata) Clone() *PodTopologySpreadMetadata {
460410
return &cp
461411
}
462412

463-
// RemovePod changes predicateMetadata assuming that the given `deletedPod` is
464-
// deleted from the system.
465-
func (meta *predicateMetadata) RemovePod(deletedPod *v1.Pod, node *v1.Node) error {
466-
return nil
467-
}
468-
469-
// AddPod changes predicateMetadata assuming that the given `addedPod` is added to the
470-
// system.
471-
func (meta *predicateMetadata) AddPod(addedPod *v1.Pod, node *v1.Node) error {
472-
return nil
473-
}
474-
475-
// ShallowCopy copies a metadata struct into a new struct and creates a copy of
476-
// its maps and slices, but it does not copy the contents of pointer values.
477-
func (meta *predicateMetadata) ShallowCopy() Metadata {
478-
newPredMeta := &predicateMetadata{}
479-
return (Metadata)(newPredMeta)
480-
}
481-
482413
// A processed version of v1.PodAffinityTerm.
483414
type affinityTermProperties struct {
484415
namespaces sets.String

pkg/scheduler/algorithm/predicates/predicates_test.go

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -567,8 +567,7 @@ func TestPodFitsHost(t *testing.T) {
567567
t.Run(test.name, func(t *testing.T) {
568568
nodeInfo := schedulernodeinfo.NewNodeInfo()
569569
nodeInfo.SetNode(test.node)
570-
factory := &MetadataProducerFactory{}
571-
fits, reasons, err := PodFitsHost(test.pod, factory.GetPredicateMetadata(test.pod, nil), nodeInfo)
570+
fits, reasons, err := PodFitsHost(test.pod, nil, nodeInfo)
572571
if err != nil {
573572
t.Errorf("unexpected error: %v", err)
574573
}
@@ -708,8 +707,7 @@ func TestPodFitsHostPorts(t *testing.T) {
708707

709708
for _, test := range tests {
710709
t.Run(test.name, func(t *testing.T) {
711-
factory := &MetadataProducerFactory{}
712-
fits, reasons, err := PodFitsHostPorts(test.pod, factory.GetPredicateMetadata(test.pod, nil), test.nodeInfo)
710+
fits, reasons, err := PodFitsHostPorts(test.pod, nil, test.nodeInfo)
713711
if err != nil {
714712
t.Errorf("unexpected error: %v", err)
715713
}
@@ -761,8 +759,7 @@ func TestGCEDiskConflicts(t *testing.T) {
761759

762760
for _, test := range tests {
763761
t.Run(test.name, func(t *testing.T) {
764-
factory := &MetadataProducerFactory{}
765-
ok, reasons, err := NoDiskConflict(test.pod, factory.GetPredicateMetadata(test.pod, nil), test.nodeInfo)
762+
ok, reasons, err := NoDiskConflict(test.pod, nil, test.nodeInfo)
766763
if err != nil {
767764
t.Errorf("unexpected error: %v", err)
768765
}
@@ -817,8 +814,7 @@ func TestAWSDiskConflicts(t *testing.T) {
817814

818815
for _, test := range tests {
819816
t.Run(test.name, func(t *testing.T) {
820-
factory := &MetadataProducerFactory{}
821-
ok, reasons, err := NoDiskConflict(test.pod, factory.GetPredicateMetadata(test.pod, nil), test.nodeInfo)
817+
ok, reasons, err := NoDiskConflict(test.pod, nil, test.nodeInfo)
822818
if err != nil {
823819
t.Errorf("unexpected error: %v", err)
824820
}
@@ -879,8 +875,7 @@ func TestRBDDiskConflicts(t *testing.T) {
879875

880876
for _, test := range tests {
881877
t.Run(test.name, func(t *testing.T) {
882-
factory := &MetadataProducerFactory{}
883-
ok, reasons, err := NoDiskConflict(test.pod, factory.GetPredicateMetadata(test.pod, nil), test.nodeInfo)
878+
ok, reasons, err := NoDiskConflict(test.pod, nil, test.nodeInfo)
884879
if err != nil {
885880
t.Errorf("unexpected error: %v", err)
886881
}
@@ -941,8 +936,7 @@ func TestISCSIDiskConflicts(t *testing.T) {
941936

942937
for _, test := range tests {
943938
t.Run(test.name, func(t *testing.T) {
944-
factory := &MetadataProducerFactory{}
945-
ok, reasons, err := NoDiskConflict(test.pod, factory.GetPredicateMetadata(test.pod, nil), test.nodeInfo)
939+
ok, reasons, err := NoDiskConflict(test.pod, nil, test.nodeInfo)
946940
if err != nil {
947941
t.Errorf("unexpected error: %v", err)
948942
}
@@ -1643,8 +1637,7 @@ func TestPodFitsSelector(t *testing.T) {
16431637
nodeInfo := schedulernodeinfo.NewNodeInfo()
16441638
nodeInfo.SetNode(&node)
16451639

1646-
factory := &MetadataProducerFactory{}
1647-
fits, reasons, err := PodMatchNodeSelector(test.pod, factory.GetPredicateMetadata(test.pod, nil), nodeInfo)
1640+
fits, reasons, err := PodMatchNodeSelector(test.pod, nil, nodeInfo)
16481641
if err != nil {
16491642
t.Errorf("unexpected error: %v", err)
16501643
}
@@ -1707,8 +1700,7 @@ func TestNodeLabelPresence(t *testing.T) {
17071700
nodeInfo.SetNode(&node)
17081701

17091702
labelChecker := NodeLabelChecker{test.presentLabels, test.absentLabels}
1710-
factory := &MetadataProducerFactory{}
1711-
fits, reasons, err := labelChecker.CheckNodeLabelPresence(test.pod, factory.GetPredicateMetadata(test.pod, nil), nodeInfo)
1703+
fits, reasons, err := labelChecker.CheckNodeLabelPresence(test.pod, nil, nodeInfo)
17121704
if err != nil {
17131705
t.Errorf("unexpected error: %v", err)
17141706
}
@@ -1808,8 +1800,7 @@ func TestRunGeneralPredicates(t *testing.T) {
18081800
for _, test := range resourceTests {
18091801
t.Run(test.name, func(t *testing.T) {
18101802
test.nodeInfo.SetNode(test.node)
1811-
factory := &MetadataProducerFactory{}
1812-
fits, reasons, err := GeneralPredicates(test.pod, factory.GetPredicateMetadata(test.pod, nil), test.nodeInfo)
1803+
fits, reasons, err := GeneralPredicates(test.pod, nil, test.nodeInfo)
18131804
if err != nil {
18141805
t.Errorf("unexpected error: %v", err)
18151806
}
@@ -2012,8 +2003,7 @@ func TestPodToleratesTaints(t *testing.T) {
20122003
t.Run(test.name, func(t *testing.T) {
20132004
nodeInfo := schedulernodeinfo.NewNodeInfo()
20142005
nodeInfo.SetNode(&test.node)
2015-
factory := &MetadataProducerFactory{}
2016-
fits, reasons, err := PodToleratesNodeTaints(test.pod, factory.GetPredicateMetadata(test.pod, nil), nodeInfo)
2006+
fits, reasons, err := PodToleratesNodeTaints(test.pod, nil, nodeInfo)
20172007
if err != nil {
20182008
t.Errorf("unexpected error: %v", err)
20192009
}

pkg/scheduler/algorithm_factory.go

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,6 @@ type AlgorithmFactoryArgs struct {
5151
// PriorityMetadataProducerFactory produces MetadataProducer from the given args.
5252
type PriorityMetadataProducerFactory func(AlgorithmFactoryArgs) priorities.MetadataProducer
5353

54-
// PredicateMetadataProducerFactory produces MetadataProducer from the given args.
55-
type PredicateMetadataProducerFactory func(AlgorithmFactoryArgs) predicates.MetadataProducer
56-
5754
// FitPredicateFactory produces a FitPredicate from the given args.
5855
type FitPredicateFactory func(AlgorithmFactoryArgs) predicates.FitPredicate
5956

@@ -78,8 +75,7 @@ var (
7875
algorithmProviderMap = make(map[string]AlgorithmProviderConfig)
7976

8077
// Registered metadata producers
81-
priorityMetadataProducerFactory PriorityMetadataProducerFactory
82-
predicateMetadataProducerFactory PredicateMetadataProducerFactory
78+
priorityMetadataProducerFactory PriorityMetadataProducerFactory
8379
)
8480

8581
// AlgorithmProviderConfig is used to store the configuration of algorithm providers.
@@ -316,13 +312,6 @@ func RegisterPriorityMetadataProducerFactory(f PriorityMetadataProducerFactory)
316312
priorityMetadataProducerFactory = f
317313
}
318314

319-
// RegisterPredicateMetadataProducerFactory registers a MetadataProducer.
320-
func RegisterPredicateMetadataProducerFactory(f PredicateMetadataProducerFactory) {
321-
schedulerFactoryMutex.Lock()
322-
defer schedulerFactoryMutex.Unlock()
323-
predicateMetadataProducerFactory = f
324-
}
325-
326315
// RegisterPriorityMapReduceFunction registers a priority function with the algorithm registry. Returns the name,
327316
// with which the function was registered.
328317
func RegisterPriorityMapReduceFunction(
@@ -545,16 +534,6 @@ func getPriorityMetadataProducer(args AlgorithmFactoryArgs) (priorities.Metadata
545534
return priorityMetadataProducerFactory(args), nil
546535
}
547536

548-
func getPredicateMetadataProducer(args AlgorithmFactoryArgs) (predicates.MetadataProducer, error) {
549-
schedulerFactoryMutex.Lock()
550-
defer schedulerFactoryMutex.Unlock()
551-
552-
if predicateMetadataProducerFactory == nil {
553-
return predicates.EmptyMetadataProducer, nil
554-
}
555-
return predicateMetadataProducerFactory(args), nil
556-
}
557-
558537
func getPriorityFunctionConfigs(names sets.String, args AlgorithmFactoryArgs) ([]priorities.PriorityConfig, error) {
559538
schedulerFactoryMutex.RLock()
560539
defer schedulerFactoryMutex.RUnlock()

pkg/scheduler/algorithmprovider/defaults/register_predicates.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,6 @@ import (
2222
)
2323

2424
func init() {
25-
// Register functions that extract metadata used by predicates computations.
26-
scheduler.RegisterPredicateMetadataProducerFactory(
27-
func(args scheduler.AlgorithmFactoryArgs) predicates.MetadataProducer {
28-
f := &predicates.MetadataProducerFactory{}
29-
return f.GetPredicateMetadata
30-
})
31-
3225
// IMPORTANT NOTES for predicate developers:
3326
// Registers predicates and priorities that are not enabled by default, but user can pick when creating their
3427
// own set of priorities/predicates.

pkg/scheduler/core/extender_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import (
3434
clientsetfake "k8s.io/client-go/kubernetes/fake"
3535
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
3636
"k8s.io/kubernetes/pkg/scheduler/algorithm"
37-
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
3837
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
3938
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
4039
extenderv1 "k8s.io/kubernetes/pkg/scheduler/apis/extender/v1"
@@ -586,7 +585,6 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
586585
cache,
587586
queue,
588587
nil,
589-
predicates.EmptyMetadataProducer,
590588
priorities.EmptyMetadataProducer,
591589
emptySnapshot,
592590
fwk,

0 commit comments

Comments
 (0)