Skip to content

Commit d27dc67

Browse files
committed
Break volumebinding Filter plugins dependency on predicates package
1 parent 180e1c9 commit d27dc67

File tree

6 files changed

+16
-17
lines changed

6 files changed

+16
-17
lines changed

pkg/scheduler/algorithm/predicates/error.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,6 @@ var (
7171
ErrNodeUnschedulable = NewPredicateFailureError("NodeUnschedulable", "node(s) were unschedulable")
7272
// ErrNodeUnknownCondition is used for NodeUnknownCondition predicate error.
7373
ErrNodeUnknownCondition = NewPredicateFailureError("NodeUnknownCondition", "node(s) had unknown conditions")
74-
// ErrVolumeNodeConflict is used for VolumeNodeAffinityConflict predicate error.
75-
ErrVolumeNodeConflict = NewPredicateFailureError("VolumeNodeAffinityConflict", "node(s) had volume node affinity conflict")
76-
// ErrVolumeBindConflict is used for VolumeBindingNoMatch predicate error.
77-
ErrVolumeBindConflict = NewPredicateFailureError("VolumeBindingNoMatch", "node(s) didn't find available persistent volumes to bind")
7874
// ErrTopologySpreadConstraintsNotMatch is used for EvenPodsSpread predicate error.
7975
ErrTopologySpreadConstraintsNotMatch = NewPredicateFailureError("EvenPodsSpreadNotMatch", "node(s) didn't match pod topology spread constraints")
8076
// ErrFakePredicate is used for test only. The fake predicates returning false also returns error
@@ -99,8 +95,6 @@ var unresolvablePredicateFailureErrors = map[PredicateFailureReason]struct{}{
9995
ErrNodeUnschedulable: {},
10096
ErrNodeUnknownCondition: {},
10197
ErrVolumeZoneConflict: {},
102-
ErrVolumeNodeConflict: {},
103-
ErrVolumeBindConflict: {},
10498
}
10599

106100
// UnresolvablePredicateExists checks if there is at least one unresolvable predicate failure reason.

pkg/scheduler/core/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ go_test(
5858
"//pkg/scheduler/framework/plugins/interpodaffinity:go_default_library",
5959
"//pkg/scheduler/framework/plugins/noderesources:go_default_library",
6060
"//pkg/scheduler/framework/plugins/podtopologyspread:go_default_library",
61+
"//pkg/scheduler/framework/plugins/volumebinding:go_default_library",
6162
"//pkg/scheduler/framework/v1alpha1:go_default_library",
6263
"//pkg/scheduler/internal/cache:go_default_library",
6364
"//pkg/scheduler/internal/queue:go_default_library",

pkg/scheduler/core/generic_scheduler_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import (
4646
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity"
4747
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources"
4848
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread"
49+
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding"
4950
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
5051
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
5152
internalqueue "k8s.io/kubernetes/pkg/scheduler/internal/queue"
@@ -1947,8 +1948,8 @@ func TestNodesWherePreemptionMightHelp(t *testing.T) {
19471948
name: "ErrVolume... errors should not be tried as it indicates that the pod is unschedulable due to no matching volumes for pod on node",
19481949
nodesStatuses: framework.NodeToStatusMap{
19491950
"machine1": framework.NewStatus(framework.UnschedulableAndUnresolvable, algorithmpredicates.ErrVolumeZoneConflict.GetReason()),
1950-
"machine2": framework.NewStatus(framework.UnschedulableAndUnresolvable, algorithmpredicates.ErrVolumeNodeConflict.GetReason()),
1951-
"machine3": framework.NewStatus(framework.UnschedulableAndUnresolvable, algorithmpredicates.ErrVolumeBindConflict.GetReason()),
1951+
"machine2": framework.NewStatus(framework.UnschedulableAndUnresolvable, volumebinding.ErrReasonNodeConflict),
1952+
"machine3": framework.NewStatus(framework.UnschedulableAndUnresolvable, volumebinding.ErrReasonBindConflict),
19521953
},
19531954
expected: map[string]bool{"machine4": true},
19541955
},

pkg/scheduler/framework/plugins/volumebinding/BUILD

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ go_library(
66
importpath = "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding",
77
visibility = ["//visibility:public"],
88
deps = [
9-
"//pkg/scheduler/algorithm/predicates:go_default_library",
109
"//pkg/scheduler/framework/v1alpha1:go_default_library",
1110
"//pkg/scheduler/nodeinfo:go_default_library",
1211
"//pkg/scheduler/volumebinder:go_default_library",
@@ -34,7 +33,6 @@ go_test(
3433
embed = [":go_default_library"],
3534
deps = [
3635
"//pkg/controller/volume/scheduling:go_default_library",
37-
"//pkg/scheduler/algorithm/predicates:go_default_library",
3836
"//pkg/scheduler/framework/v1alpha1:go_default_library",
3937
"//pkg/scheduler/nodeinfo:go_default_library",
4038
"//pkg/scheduler/volumebinder:go_default_library",

pkg/scheduler/framework/plugins/volumebinding/volume_binding.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"context"
2121

2222
v1 "k8s.io/api/core/v1"
23-
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
2423
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
2524
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
2625
"k8s.io/kubernetes/pkg/scheduler/volumebinder"
@@ -36,6 +35,13 @@ var _ framework.FilterPlugin = &VolumeBinding{}
3635
// Name is the name of the plugin used in Registry and configurations.
3736
const Name = "VolumeBinding"
3837

38+
const (
39+
// ErrReasonBindConflict is used for VolumeBindingNoMatch predicate error.
40+
ErrReasonBindConflict = "node(s) didn't find available persistent volumes to bind"
41+
// ErrReasonNodeConflict is used for VolumeNodeAffinityConflict predicate error.
42+
ErrReasonNodeConflict = "node(s) had volume node affinity conflict"
43+
)
44+
3945
// Name returns name of the plugin. It is used in logs, etc.
4046
func (pl *VolumeBinding) Name() string {
4147
return Name
@@ -81,10 +87,10 @@ func (pl *VolumeBinding) Filter(ctx context.Context, cs *framework.CycleState, p
8187
if !boundSatisfied || !unboundSatisfied {
8288
status := framework.NewStatus(framework.UnschedulableAndUnresolvable)
8389
if !boundSatisfied {
84-
status.AppendReason(predicates.ErrVolumeNodeConflict.GetReason())
90+
status.AppendReason(ErrReasonNodeConflict)
8591
}
8692
if !unboundSatisfied {
87-
status.AppendReason(predicates.ErrVolumeBindConflict.GetReason())
93+
status.AppendReason(ErrReasonBindConflict)
8894
}
8995
return status
9096
}

pkg/scheduler/framework/plugins/volumebinding/volume_binding_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424

2525
v1 "k8s.io/api/core/v1"
2626
volumescheduling "k8s.io/kubernetes/pkg/controller/volume/scheduling"
27-
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
2827
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
2928
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
3029
"k8s.io/kubernetes/pkg/scheduler/volumebinder"
@@ -73,7 +72,7 @@ func TestVolumeBinding(t *testing.T) {
7372
FindUnboundSatsified: false,
7473
FindBoundSatsified: true,
7574
},
76-
wantStatus: framework.NewStatus(framework.UnschedulableAndUnresolvable, predicates.ErrVolumeBindConflict.GetReason()),
75+
wantStatus: framework.NewStatus(framework.UnschedulableAndUnresolvable, ErrReasonBindConflict),
7776
},
7877
{
7978
name: "bound and unbound unsatisfied",
@@ -83,8 +82,8 @@ func TestVolumeBinding(t *testing.T) {
8382
FindUnboundSatsified: false,
8483
FindBoundSatsified: false,
8584
},
86-
wantStatus: framework.NewStatus(framework.UnschedulableAndUnresolvable, predicates.ErrVolumeNodeConflict.GetReason(),
87-
predicates.ErrVolumeBindConflict.GetReason()),
85+
wantStatus: framework.NewStatus(framework.UnschedulableAndUnresolvable, ErrReasonNodeConflict,
86+
ErrReasonBindConflict),
8887
},
8988
{
9089
name: "unbound/found matches/bind succeeds",

0 commit comments

Comments
 (0)