diff --git a/pkg/scheduler/algorithm/predicates/error.go b/pkg/scheduler/algorithm/predicates/error.go index 5860ef3048d..2330b940c9e 100644 --- a/pkg/scheduler/algorithm/predicates/error.go +++ b/pkg/scheduler/algorithm/predicates/error.go @@ -31,8 +31,6 @@ var ( // it can never be made to pass by removing pods, you need to add the predicate // failure error in nodesWherePreemptionMightHelp() in scheduler/core/generic_scheduler.go - // ErrVolumeZoneConflict is used for NoVolumeZoneConflict predicate error. - ErrVolumeZoneConflict = NewPredicateFailureError("NoVolumeZoneConflict", "node(s) had no available volume zone") // ErrNodeSelectorNotMatch is used for MatchNodeSelector predicate error. ErrNodeSelectorNotMatch = NewPredicateFailureError("MatchNodeSelector", "node(s) didn't match node selector") // ErrPodAffinityNotMatch is used for MatchInterPodAffinity predicate error. @@ -92,7 +90,6 @@ var unresolvablePredicateFailureErrors = map[PredicateFailureReason]struct{}{ ErrNodeUnderMemoryPressure: {}, ErrNodeUnschedulable: {}, ErrNodeUnknownCondition: {}, - ErrVolumeZoneConflict: {}, } // UnresolvablePredicateExists checks if there is at least one unresolvable predicate failure reason. diff --git a/pkg/scheduler/core/BUILD b/pkg/scheduler/core/BUILD index 6e0e77e7a62..52033284ece 100644 --- a/pkg/scheduler/core/BUILD +++ b/pkg/scheduler/core/BUILD @@ -59,6 +59,7 @@ go_test( "//pkg/scheduler/framework/plugins/podtopologyspread:go_default_library", "//pkg/scheduler/framework/plugins/volumebinding:go_default_library", "//pkg/scheduler/framework/plugins/volumerestrictions:go_default_library", + "//pkg/scheduler/framework/plugins/volumezone:go_default_library", "//pkg/scheduler/framework/v1alpha1:go_default_library", "//pkg/scheduler/internal/cache:go_default_library", "//pkg/scheduler/internal/queue:go_default_library", diff --git a/pkg/scheduler/core/generic_scheduler_test.go b/pkg/scheduler/core/generic_scheduler_test.go index 64f650a93ce..12e3c22ac73 100644 --- a/pkg/scheduler/core/generic_scheduler_test.go +++ b/pkg/scheduler/core/generic_scheduler_test.go @@ -28,6 +28,7 @@ import ( "time" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumerestrictions" + "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumezone" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" @@ -1931,7 +1932,7 @@ func TestNodesWherePreemptionMightHelp(t *testing.T) { { name: "ErrVolume... errors should not be tried as it indicates that the pod is unschedulable due to no matching volumes for pod on node", nodesStatuses: framework.NodeToStatusMap{ - "machine1": framework.NewStatus(framework.UnschedulableAndUnresolvable, algorithmpredicates.ErrVolumeZoneConflict.GetReason()), + "machine1": framework.NewStatus(framework.UnschedulableAndUnresolvable, volumezone.ErrReasonConflict), "machine2": framework.NewStatus(framework.UnschedulableAndUnresolvable, volumebinding.ErrReasonNodeConflict), "machine3": framework.NewStatus(framework.UnschedulableAndUnresolvable, volumebinding.ErrReasonBindConflict), }, diff --git a/pkg/scheduler/framework/plugins/volumezone/BUILD b/pkg/scheduler/framework/plugins/volumezone/BUILD index cc11dca3721..7c2400e9cd5 100644 --- a/pkg/scheduler/framework/plugins/volumezone/BUILD +++ b/pkg/scheduler/framework/plugins/volumezone/BUILD @@ -7,7 +7,6 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/apis/core/v1/helper:go_default_library", - "//pkg/scheduler/algorithm/predicates:go_default_library", "//pkg/scheduler/framework/v1alpha1:go_default_library", "//pkg/scheduler/nodeinfo:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", @@ -25,7 +24,6 @@ go_test( srcs = ["volume_zone_test.go"], embed = [":go_default_library"], deps = [ - "//pkg/scheduler/algorithm/predicates:go_default_library", "//pkg/scheduler/framework/v1alpha1:go_default_library", "//pkg/scheduler/listers/fake:go_default_library", "//pkg/scheduler/nodeinfo:go_default_library", diff --git a/pkg/scheduler/framework/plugins/volumezone/volume_zone.go b/pkg/scheduler/framework/plugins/volumezone/volume_zone.go index 5b3fba11649..1340f5421f0 100644 --- a/pkg/scheduler/framework/plugins/volumezone/volume_zone.go +++ b/pkg/scheduler/framework/plugins/volumezone/volume_zone.go @@ -28,7 +28,6 @@ import ( volumehelpers "k8s.io/cloud-provider/volume/helpers" "k8s.io/klog" v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" - "k8s.io/kubernetes/pkg/scheduler/algorithm/predicates" framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1" "k8s.io/kubernetes/pkg/scheduler/nodeinfo" ) @@ -42,8 +41,13 @@ type VolumeZone struct { var _ framework.FilterPlugin = &VolumeZone{} -// Name is the name of the plugin used in the plugin registry and configurations. -const Name = "VolumeZone" +const ( + // Name is the name of the plugin used in the plugin registry and configurations. + Name = "VolumeZone" + + // ErrReasonConflict is used for NoVolumeZoneConflict predicate error. + ErrReasonConflict = "node(s) had no available volume zone" +) // Name returns name of the plugin. It is used in logs, etc. func (pl *VolumeZone) Name() string { @@ -153,7 +157,7 @@ func (pl *VolumeZone) Filter(ctx context.Context, _ *framework.CycleState, pod * if !volumeVSet.Has(nodeV) { klog.V(10).Infof("Won't schedule pod %q onto node %q due to volume %q (mismatch on %q)", pod.Name, node.Name, pvName, k) - return framework.NewStatus(framework.UnschedulableAndUnresolvable, predicates.ErrVolumeZoneConflict.GetReason()) + return framework.NewStatus(framework.UnschedulableAndUnresolvable, ErrReasonConflict) } } } diff --git a/pkg/scheduler/framework/plugins/volumezone/volume_zone_test.go b/pkg/scheduler/framework/plugins/volumezone/volume_zone_test.go index 9aa33b643aa..4c395b9985c 100644 --- a/pkg/scheduler/framework/plugins/volumezone/volume_zone_test.go +++ b/pkg/scheduler/framework/plugins/volumezone/volume_zone_test.go @@ -24,7 +24,6 @@ import ( v1 "k8s.io/api/core/v1" storagev1 "k8s.io/api/storage/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/kubernetes/pkg/scheduler/algorithm/predicates" framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1" fakelisters "k8s.io/kubernetes/pkg/scheduler/listers/fake" schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo" @@ -136,7 +135,7 @@ func TestSingleZone(t *testing.T) { Labels: map[string]string{v1.LabelZoneRegion: "no_us-west1-b", "uselessLabel": "none"}, }, }, - wantStatus: framework.NewStatus(framework.UnschedulableAndUnresolvable, predicates.ErrVolumeZoneConflict.GetReason()), + wantStatus: framework.NewStatus(framework.UnschedulableAndUnresolvable, ErrReasonConflict), }, { name: "label zone failure domain failed match", @@ -147,7 +146,7 @@ func TestSingleZone(t *testing.T) { Labels: map[string]string{v1.LabelZoneFailureDomain: "no_us-west1-a", "uselessLabel": "none"}, }, }, - wantStatus: framework.NewStatus(framework.UnschedulableAndUnresolvable, predicates.ErrVolumeZoneConflict.GetReason()), + wantStatus: framework.NewStatus(framework.UnschedulableAndUnresolvable, ErrReasonConflict), }, } @@ -234,7 +233,7 @@ func TestMultiZone(t *testing.T) { Labels: map[string]string{v1.LabelZoneFailureDomain: "us-west1-b", "uselessLabel": "none"}, }, }, - wantStatus: framework.NewStatus(framework.UnschedulableAndUnresolvable, predicates.ErrVolumeZoneConflict.GetReason()), + wantStatus: framework.NewStatus(framework.UnschedulableAndUnresolvable, ErrReasonConflict), }, }