Skip to content

Commit c8377ef

Browse files
Add BuildArgs to interpodaffinity plugin
Signed-off-by: Aldo Culquicondor <[email protected]>
1 parent 2e5d5eb commit c8377ef

File tree

4 files changed

+24
-15
lines changed

4 files changed

+24
-15
lines changed

pkg/scheduler/framework/plugins/interpodaffinity/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ go_library(
2222
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
2323
"//staging/src/k8s.io/client-go/util/workqueue:go_default_library",
2424
"//vendor/k8s.io/klog:go_default_library",
25+
"//vendor/k8s.io/utils/pointer:go_default_library",
2526
],
2627
)
2728

@@ -39,6 +40,7 @@ go_test(
3940
"//staging/src/k8s.io/api/core/v1:go_default_library",
4041
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
4142
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
43+
"//vendor/k8s.io/utils/pointer:go_default_library",
4244
],
4345
)
4446

pkg/scheduler/framework/plugins/interpodaffinity/plugin.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"k8s.io/apimachinery/pkg/util/validation/field"
2525
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
2626
schedulerlisters "k8s.io/kubernetes/pkg/scheduler/listers"
27+
"k8s.io/utils/pointer"
2728
)
2829

2930
const (
@@ -52,8 +53,8 @@ var _ framework.ScorePlugin = &InterPodAffinity{}
5253

5354
// InterPodAffinity is a plugin that checks inter pod affinity
5455
type InterPodAffinity struct {
55-
sharedLister schedulerlisters.SharedLister
56-
hardPodAffinityWeight int32
56+
Args
57+
sharedLister schedulerlisters.SharedLister
5758
sync.Mutex
5859
}
5960

@@ -62,24 +63,27 @@ func (pl *InterPodAffinity) Name() string {
6263
return Name
6364
}
6465

66+
// BuildArgs returns the args that were used to build the plugin.
67+
func (pl *InterPodAffinity) BuildArgs() interface{} {
68+
return pl.Args
69+
}
70+
6571
// New initializes a new plugin and returns it.
6672
func New(plArgs *runtime.Unknown, h framework.FrameworkHandle) (framework.Plugin, error) {
6773
if h.SnapshotSharedLister() == nil {
6874
return nil, fmt.Errorf("SnapshotSharedlister is nil")
6975
}
70-
args := &Args{}
71-
if err := framework.DecodeInto(plArgs, args); err != nil {
72-
return nil, err
76+
pl := &InterPodAffinity{
77+
sharedLister: h.SnapshotSharedLister(),
7378
}
74-
if err := validateArgs(args); err != nil {
79+
if err := framework.DecodeInto(plArgs, &pl.Args); err != nil {
7580
return nil, err
7681
}
77-
pl := &InterPodAffinity{
78-
sharedLister: h.SnapshotSharedLister(),
79-
hardPodAffinityWeight: DefaultHardPodAffinityWeight,
82+
if err := validateArgs(&pl.Args); err != nil {
83+
return nil, err
8084
}
81-
if args.HardPodAffinityWeight != nil {
82-
pl.hardPodAffinityWeight = *args.HardPodAffinityWeight
85+
if pl.HardPodAffinityWeight == nil {
86+
pl.HardPodAffinityWeight = pointer.Int32Ptr(DefaultHardPodAffinityWeight)
8387
}
8488
return pl, nil
8589
}

pkg/scheduler/framework/plugins/interpodaffinity/scoring.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,15 @@ func (pl *InterPodAffinity) processExistingPod(state *preScoreState, existingPod
127127
// For every hard pod affinity term of <existingPod>, if <pod> matches the term,
128128
// increment <p.counts> for every node in the cluster with the same <term.TopologyKey>
129129
// value as that of <existingPod>'s node by the constant <ipa.hardPodAffinityWeight>
130-
if pl.hardPodAffinityWeight > 0 {
130+
if *pl.HardPodAffinityWeight > 0 {
131131
terms := existingPodAffinity.PodAffinity.RequiredDuringSchedulingIgnoredDuringExecution
132132
// TODO: Uncomment this block when implement RequiredDuringSchedulingRequiredDuringExecution.
133133
//if len(existingPodAffinity.PodAffinity.RequiredDuringSchedulingRequiredDuringExecution) != 0 {
134134
// terms = append(terms, existingPodAffinity.PodAffinity.RequiredDuringSchedulingRequiredDuringExecution...)
135135
//}
136136
for i := range terms {
137137
term := &terms[i]
138-
processedTerm, err := newWeightedAffinityTerm(existingPod, term, pl.hardPodAffinityWeight)
138+
processedTerm, err := newWeightedAffinityTerm(existingPod, term, *pl.HardPodAffinityWeight)
139139
if err != nil {
140140
return err
141141
}

pkg/scheduler/framework/plugins/interpodaffinity/scoring_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"k8s.io/apimachinery/pkg/runtime"
2828
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
2929
"k8s.io/kubernetes/pkg/scheduler/internal/cache"
30+
"k8s.io/utils/pointer"
3031
)
3132

3233
func TestPreferredAffinity(t *testing.T) {
@@ -519,8 +520,10 @@ func TestPreferredAffinity(t *testing.T) {
519520
state := framework.NewCycleState()
520521
snapshot := cache.NewSnapshot(test.pods, test.nodes)
521522
p := &InterPodAffinity{
522-
sharedLister: snapshot,
523-
hardPodAffinityWeight: 1,
523+
Args: Args{
524+
HardPodAffinityWeight: pointer.Int32Ptr(DefaultHardPodAffinityWeight),
525+
},
526+
sharedLister: snapshot,
524527
}
525528

526529
status := p.PreScore(context.Background(), state, test.pod, test.nodes)

0 commit comments

Comments
 (0)