Skip to content

Commit 7e01fe1

Browse files
authored
Merge pull request kubernetes#86228 from ahg-g/ahg-r1
Deprecate scheduler's FailureReason
2 parents 6715e35 + 70a2bcc commit 7e01fe1

File tree

3 files changed

+27
-45
lines changed

3 files changed

+27
-45
lines changed

pkg/kubelet/lifecycle/predicate.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,6 @@ func (w *predicateAdmitHandler) Admit(attrs *PodAdmitAttributes) PodAdmitResult
134134
reason = fmt.Sprintf("OutOf%s", re.ResourceName)
135135
message = re.Error()
136136
klog.V(2).Infof("Predicate failed on Pod: %v, for reason: %v", format.Pod(admitPod), message)
137-
case *predicates.FailureReason:
138-
reason = re.GetReason()
139-
message = fmt.Sprintf("Failure: %s", re.GetReason())
140-
klog.V(2).Infof("Predicate failed on Pod: %v, for reason: %v", format.Pod(admitPod), message)
141137
default:
142138
reason = "UnexpectedPredicateFailureType"
143139
message = fmt.Sprintf("GeneralPredicates failed due to %v, which is unexpected.", r)

pkg/scheduler/algorithm/predicates/error.go

Lines changed: 26 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -32,54 +32,54 @@ var (
3232
// failure error in nodesWherePreemptionMightHelp() in scheduler/core/generic_scheduler.go
3333

3434
// ErrDiskConflict is used for NoDiskConflict predicate error.
35-
ErrDiskConflict = newPredicateFailureError("NoDiskConflict", "node(s) had no available disk")
35+
ErrDiskConflict = NewPredicateFailureError("NoDiskConflict", "node(s) had no available disk")
3636
// ErrVolumeZoneConflict is used for NoVolumeZoneConflict predicate error.
37-
ErrVolumeZoneConflict = newPredicateFailureError("NoVolumeZoneConflict", "node(s) had no available volume zone")
37+
ErrVolumeZoneConflict = NewPredicateFailureError("NoVolumeZoneConflict", "node(s) had no available volume zone")
3838
// ErrNodeSelectorNotMatch is used for MatchNodeSelector predicate error.
39-
ErrNodeSelectorNotMatch = newPredicateFailureError("MatchNodeSelector", "node(s) didn't match node selector")
39+
ErrNodeSelectorNotMatch = NewPredicateFailureError("MatchNodeSelector", "node(s) didn't match node selector")
4040
// ErrPodAffinityNotMatch is used for MatchInterPodAffinity predicate error.
41-
ErrPodAffinityNotMatch = newPredicateFailureError("MatchInterPodAffinity", "node(s) didn't match pod affinity/anti-affinity")
41+
ErrPodAffinityNotMatch = NewPredicateFailureError("MatchInterPodAffinity", "node(s) didn't match pod affinity/anti-affinity")
4242
// ErrPodAffinityRulesNotMatch is used for PodAffinityRulesNotMatch predicate error.
43-
ErrPodAffinityRulesNotMatch = newPredicateFailureError("PodAffinityRulesNotMatch", "node(s) didn't match pod affinity rules")
43+
ErrPodAffinityRulesNotMatch = NewPredicateFailureError("PodAffinityRulesNotMatch", "node(s) didn't match pod affinity rules")
4444
// ErrPodAntiAffinityRulesNotMatch is used for PodAntiAffinityRulesNotMatch predicate error.
45-
ErrPodAntiAffinityRulesNotMatch = newPredicateFailureError("PodAntiAffinityRulesNotMatch", "node(s) didn't match pod anti-affinity rules")
45+
ErrPodAntiAffinityRulesNotMatch = NewPredicateFailureError("PodAntiAffinityRulesNotMatch", "node(s) didn't match pod anti-affinity rules")
4646
// ErrExistingPodsAntiAffinityRulesNotMatch is used for ExistingPodsAntiAffinityRulesNotMatch predicate error.
47-
ErrExistingPodsAntiAffinityRulesNotMatch = newPredicateFailureError("ExistingPodsAntiAffinityRulesNotMatch", "node(s) didn't satisfy existing pods anti-affinity rules")
47+
ErrExistingPodsAntiAffinityRulesNotMatch = NewPredicateFailureError("ExistingPodsAntiAffinityRulesNotMatch", "node(s) didn't satisfy existing pods anti-affinity rules")
4848
// ErrTaintsTolerationsNotMatch is used for PodToleratesNodeTaints predicate error.
49-
ErrTaintsTolerationsNotMatch = newPredicateFailureError("PodToleratesNodeTaints", "node(s) had taints that the pod didn't tolerate")
49+
ErrTaintsTolerationsNotMatch = NewPredicateFailureError("PodToleratesNodeTaints", "node(s) had taints that the pod didn't tolerate")
5050
// ErrPodNotMatchHostName is used for HostName predicate error.
51-
ErrPodNotMatchHostName = newPredicateFailureError("HostName", "node(s) didn't match the requested hostname")
51+
ErrPodNotMatchHostName = NewPredicateFailureError("HostName", "node(s) didn't match the requested hostname")
5252
// ErrPodNotFitsHostPorts is used for PodFitsHostPorts predicate error.
53-
ErrPodNotFitsHostPorts = newPredicateFailureError("PodFitsHostPorts", "node(s) didn't have free ports for the requested pod ports")
53+
ErrPodNotFitsHostPorts = NewPredicateFailureError("PodFitsHostPorts", "node(s) didn't have free ports for the requested pod ports")
5454
// ErrNodeLabelPresenceViolated is used for CheckNodeLabelPresence predicate error.
55-
ErrNodeLabelPresenceViolated = newPredicateFailureError("CheckNodeLabelPresence", "node(s) didn't have the requested labels")
55+
ErrNodeLabelPresenceViolated = NewPredicateFailureError("CheckNodeLabelPresence", "node(s) didn't have the requested labels")
5656
// ErrServiceAffinityViolated is used for CheckServiceAffinity predicate error.
57-
ErrServiceAffinityViolated = newPredicateFailureError("CheckServiceAffinity", "node(s) didn't match service affinity")
57+
ErrServiceAffinityViolated = NewPredicateFailureError("CheckServiceAffinity", "node(s) didn't match service affinity")
5858
// ErrMaxVolumeCountExceeded is used for MaxVolumeCount predicate error.
59-
ErrMaxVolumeCountExceeded = newPredicateFailureError("MaxVolumeCount", "node(s) exceed max volume count")
59+
ErrMaxVolumeCountExceeded = NewPredicateFailureError("MaxVolumeCount", "node(s) exceed max volume count")
6060
// ErrNodeUnderMemoryPressure is used for NodeUnderMemoryPressure predicate error.
61-
ErrNodeUnderMemoryPressure = newPredicateFailureError("NodeUnderMemoryPressure", "node(s) had memory pressure")
61+
ErrNodeUnderMemoryPressure = NewPredicateFailureError("NodeUnderMemoryPressure", "node(s) had memory pressure")
6262
// ErrNodeUnderDiskPressure is used for NodeUnderDiskPressure predicate error.
63-
ErrNodeUnderDiskPressure = newPredicateFailureError("NodeUnderDiskPressure", "node(s) had disk pressure")
63+
ErrNodeUnderDiskPressure = NewPredicateFailureError("NodeUnderDiskPressure", "node(s) had disk pressure")
6464
// ErrNodeUnderPIDPressure is used for NodeUnderPIDPressure predicate error.
65-
ErrNodeUnderPIDPressure = newPredicateFailureError("NodeUnderPIDPressure", "node(s) had pid pressure")
65+
ErrNodeUnderPIDPressure = NewPredicateFailureError("NodeUnderPIDPressure", "node(s) had pid pressure")
6666
// ErrNodeNotReady is used for NodeNotReady predicate error.
67-
ErrNodeNotReady = newPredicateFailureError("NodeNotReady", "node(s) were not ready")
67+
ErrNodeNotReady = NewPredicateFailureError("NodeNotReady", "node(s) were not ready")
6868
// ErrNodeNetworkUnavailable is used for NodeNetworkUnavailable predicate error.
69-
ErrNodeNetworkUnavailable = newPredicateFailureError("NodeNetworkUnavailable", "node(s) had unavailable network")
69+
ErrNodeNetworkUnavailable = NewPredicateFailureError("NodeNetworkUnavailable", "node(s) had unavailable network")
7070
// ErrNodeUnschedulable is used for NodeUnschedulable predicate error.
71-
ErrNodeUnschedulable = newPredicateFailureError("NodeUnschedulable", "node(s) were unschedulable")
71+
ErrNodeUnschedulable = NewPredicateFailureError("NodeUnschedulable", "node(s) were unschedulable")
7272
// ErrNodeUnknownCondition is used for NodeUnknownCondition predicate error.
73-
ErrNodeUnknownCondition = newPredicateFailureError("NodeUnknownCondition", "node(s) had unknown conditions")
73+
ErrNodeUnknownCondition = NewPredicateFailureError("NodeUnknownCondition", "node(s) had unknown conditions")
7474
// ErrVolumeNodeConflict is used for VolumeNodeAffinityConflict predicate error.
75-
ErrVolumeNodeConflict = newPredicateFailureError("VolumeNodeAffinityConflict", "node(s) had volume node affinity conflict")
75+
ErrVolumeNodeConflict = NewPredicateFailureError("VolumeNodeAffinityConflict", "node(s) had volume node affinity conflict")
7676
// ErrVolumeBindConflict is used for VolumeBindingNoMatch predicate error.
77-
ErrVolumeBindConflict = newPredicateFailureError("VolumeBindingNoMatch", "node(s) didn't find available persistent volumes to bind")
77+
ErrVolumeBindConflict = NewPredicateFailureError("VolumeBindingNoMatch", "node(s) didn't find available persistent volumes to bind")
7878
// ErrTopologySpreadConstraintsNotMatch is used for EvenPodsSpread predicate error.
79-
ErrTopologySpreadConstraintsNotMatch = newPredicateFailureError("EvenPodsSpreadNotMatch", "node(s) didn't match pod topology spread constraints")
79+
ErrTopologySpreadConstraintsNotMatch = NewPredicateFailureError("EvenPodsSpreadNotMatch", "node(s) didn't match pod topology spread constraints")
8080
// ErrFakePredicate is used for test only. The fake predicates returning false also returns error
8181
// as ErrFakePredicate.
82-
ErrFakePredicate = newPredicateFailureError("FakePredicateError", "Nodes failed the fake predicate")
82+
ErrFakePredicate = NewPredicateFailureError("FakePredicateError", "Nodes failed the fake predicate")
8383
)
8484

8585
var unresolvablePredicateFailureErrors = map[PredicateFailureReason]struct{}{
@@ -154,7 +154,8 @@ type PredicateFailureError struct {
154154
PredicateDesc string
155155
}
156156

157-
func newPredicateFailureError(predicateName, predicateDesc string) *PredicateFailureError {
157+
// NewPredicateFailureError creates a PredicateFailureError with message.
158+
func NewPredicateFailureError(predicateName, predicateDesc string) *PredicateFailureError {
158159
return &PredicateFailureError{PredicateName: predicateName, PredicateDesc: predicateDesc}
159160
}
160161

@@ -171,18 +172,3 @@ func (e *PredicateFailureError) GetReason() string {
171172
type PredicateFailureReason interface {
172173
GetReason() string
173174
}
174-
175-
// FailureReason describes a failure reason.
176-
type FailureReason struct {
177-
reason string
178-
}
179-
180-
// NewFailureReason creates a FailureReason with message.
181-
func NewFailureReason(msg string) *FailureReason {
182-
return &FailureReason{reason: msg}
183-
}
184-
185-
// GetReason returns the reason of the FailureReason.
186-
func (e *FailureReason) GetReason() string {
187-
return e.reason
188-
}

pkg/scheduler/core/generic_scheduler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ func (g *genericScheduler) findNodesThatFit(ctx context.Context, state *framewor
579579
if _, found := failedPredicateMap[failedNodeName]; !found {
580580
failedPredicateMap[failedNodeName] = []predicates.PredicateFailureReason{}
581581
}
582-
failedPredicateMap[failedNodeName] = append(failedPredicateMap[failedNodeName], predicates.NewFailureReason(failedMsg))
582+
failedPredicateMap[failedNodeName] = append(failedPredicateMap[failedNodeName], predicates.NewPredicateFailureError(extender.Name(), failedMsg))
583583
}
584584
filtered = filteredList
585585
if len(filtered) == 0 {

0 commit comments

Comments
 (0)