Skip to content

Commit fd9f2b4

Browse files
authored
Merge pull request #1637 from googs1025/chore/fix
chore: add setDefaultEvictor return an error
2 parents d97f1c9 + 655ab51 commit fd9f2b4

File tree

3 files changed

+32
-9
lines changed

3 files changed

+32
-9
lines changed

pkg/descheduler/policyconfig.go

+11-9
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,22 @@ func decode(policyConfigFile string, policy []byte, client clientset.Interface,
6262
if err != nil {
6363
return nil, err
6464
}
65-
66-
setDefaults(*internalPolicy, registry, client)
67-
68-
return internalPolicy, nil
65+
return setDefaults(*internalPolicy, registry, client)
6966
}
7067

71-
func setDefaults(in api.DeschedulerPolicy, registry pluginregistry.Registry, client clientset.Interface) *api.DeschedulerPolicy {
68+
func setDefaults(in api.DeschedulerPolicy, registry pluginregistry.Registry, client clientset.Interface) (*api.DeschedulerPolicy, error) {
69+
var err error
7270
for idx, profile := range in.Profiles {
7371
// If we need to set defaults coming from loadtime in each profile we do it here
74-
in.Profiles[idx] = setDefaultEvictor(profile, client)
72+
in.Profiles[idx], err = setDefaultEvictor(profile, client)
73+
if err != nil {
74+
return nil, err
75+
}
7576
for _, pluginConfig := range profile.PluginConfigs {
7677
setDefaultsPluginConfig(&pluginConfig, registry)
7778
}
7879
}
79-
return &in
80+
return &in, nil
8081
}
8182

8283
func setDefaultsPluginConfig(pluginConfig *api.PluginConfig, registry pluginregistry.Registry) {
@@ -97,7 +98,7 @@ func findPluginName(names []string, key string) bool {
9798
return false
9899
}
99100

100-
func setDefaultEvictor(profile api.DeschedulerProfile, client clientset.Interface) api.DeschedulerProfile {
101+
func setDefaultEvictor(profile api.DeschedulerProfile, client clientset.Interface) (api.DeschedulerProfile, error) {
101102
newPluginConfig := api.PluginConfig{
102103
Name: defaultevictor.PluginName,
103104
Args: &defaultevictor.DefaultEvictorArgs{
@@ -128,10 +129,11 @@ func setDefaultEvictor(profile api.DeschedulerProfile, client clientset.Interfac
128129
thresholdPriority, err := utils.GetPriorityValueFromPriorityThreshold(context.TODO(), client, defaultevictorPluginConfig.Args.(*defaultevictor.DefaultEvictorArgs).PriorityThreshold)
129130
if err != nil {
130131
klog.Error(err, "Failed to get threshold priority from args")
132+
return profile, err
131133
}
132134
profile.PluginConfigs[idx].Args.(*defaultevictor.DefaultEvictorArgs).PriorityThreshold = &api.PriorityThreshold{}
133135
profile.PluginConfigs[idx].Args.(*defaultevictor.DefaultEvictorArgs).PriorityThreshold.Value = &thresholdPriority
134-
return profile
136+
return profile, nil
135137
}
136138

137139
func validateDeschedulerConfiguration(in api.DeschedulerPolicy, registry pluginregistry.Registry) error {

pkg/descheduler/policyconfig_test.go

+20
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package descheduler
1818

1919
import (
20+
"errors"
2021
"fmt"
2122
"testing"
2223

@@ -121,6 +122,25 @@ profiles:
121122
},
122123
},
123124
},
125+
{
126+
description: "v1alpha2 to internal, validate error handling (priorityThreshold exceeding maximum)",
127+
policy: []byte(`apiVersion: "descheduler/v1alpha2"
128+
kind: "DeschedulerPolicy"
129+
profiles:
130+
- name: ProfileName
131+
pluginConfig:
132+
- name: "DefaultEvictor"
133+
args:
134+
priorityThreshold:
135+
value: 2000000001
136+
plugins:
137+
deschedule:
138+
enabled:
139+
- "RemovePodsHavingTooManyRestarts"
140+
`),
141+
result: nil,
142+
err: errors.New("priority threshold can't be greater than 2000000000"),
143+
},
124144
}
125145

126146
for _, tc := range testCases {

pkg/utils/predicates.go

+1
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ func GetNodeWeightGivenPodPreferredAffinity(pod *v1.Pod, node *v1.Node) (int32,
275275
match, err := corev1.MatchNodeSelectorTerms(node, preferredNodeSelector)
276276
if err != nil {
277277
klog.ErrorS(err, "error parsing node selector", "selector", preferredNodeSelector)
278+
continue
278279
}
279280
if match {
280281
sumWeights += prefSchedulTerm.Weight

0 commit comments

Comments
 (0)