Skip to content

Commit 7fb40fc

Browse files
Wrap errors on VolumeBinding plugin
Signed-off-by: Aldo Culquicondor <[email protected]> Change-Id: I23053528ac6857124fddd7f9fa26e122202ff4bd Signed-off-by: Aldo Culquicondor <[email protected]>
1 parent 94985e2 commit 7fb40fc

File tree

2 files changed

+17
-17
lines changed

2 files changed

+17
-17
lines changed

pkg/controller/volume/scheduling/scheduler_binder.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ func (b *volumeBinder) BindPodVolumes(assumedPod *v1.Pod, podVolumes *PodVolumes
443443
return b, err
444444
})
445445
if err != nil {
446-
return fmt.Errorf("Failed to bind volumes: %v", err)
446+
return fmt.Errorf("binding volumes: %w", err)
447447
}
448448
return nil
449449
}
@@ -543,7 +543,7 @@ func (b *volumeBinder) checkBindings(pod *v1.Pod, bindings []*BindingInfo, claim
543543

544544
node, err := b.nodeLister.Get(pod.Spec.NodeName)
545545
if err != nil {
546-
return false, fmt.Errorf("failed to get node %q: %v", pod.Spec.NodeName, err)
546+
return false, fmt.Errorf("failed to get node %q: %w", pod.Spec.NodeName, err)
547547
}
548548

549549
csiNode, err := b.csiNodeLister.Get(node.Name)
@@ -559,20 +559,20 @@ func (b *volumeBinder) checkBindings(pod *v1.Pod, bindings []*BindingInfo, claim
559559
_, err = b.podLister.Pods(pod.Namespace).Get(pod.Name)
560560
if err != nil {
561561
if apierrors.IsNotFound(err) {
562-
return false, fmt.Errorf("pod %q does not exist any more", podName)
562+
return false, fmt.Errorf("pod does not exist any more: %w", err)
563563
}
564564
klog.Errorf("failed to get pod %s/%s from the lister: %v", pod.Namespace, pod.Name, err)
565565
}
566566

567567
for _, binding := range bindings {
568568
pv, err := b.pvCache.GetAPIPV(binding.pv.Name)
569569
if err != nil {
570-
return false, fmt.Errorf("failed to check binding: %v", err)
570+
return false, fmt.Errorf("failed to check binding: %w", err)
571571
}
572572

573573
pvc, err := b.pvcCache.GetAPIPVC(getPVCName(binding.pvc))
574574
if err != nil {
575-
return false, fmt.Errorf("failed to check binding: %v", err)
575+
return false, fmt.Errorf("failed to check binding: %w", err)
576576
}
577577

578578
// Because we updated PV in apiserver, skip if API object is older
@@ -583,12 +583,12 @@ func (b *volumeBinder) checkBindings(pod *v1.Pod, bindings []*BindingInfo, claim
583583

584584
pv, err = b.tryTranslatePVToCSI(pv, csiNode)
585585
if err != nil {
586-
return false, fmt.Errorf("failed to translate pv to csi: %v", err)
586+
return false, fmt.Errorf("failed to translate pv to csi: %w", err)
587587
}
588588

589589
// Check PV's node affinity (the node might not have the proper label)
590590
if err := volumeutil.CheckNodeAffinity(pv, node.Labels); err != nil {
591-
return false, fmt.Errorf("pv %q node affinity doesn't match node %q: %v", pv.Name, node.Name, err)
591+
return false, fmt.Errorf("pv %q node affinity doesn't match node %q: %w", pv.Name, node.Name, err)
592592
}
593593

594594
// Check if pv.ClaimRef got dropped by unbindVolume()
@@ -605,7 +605,7 @@ func (b *volumeBinder) checkBindings(pod *v1.Pod, bindings []*BindingInfo, claim
605605
for _, claim := range claimsToProvision {
606606
pvc, err := b.pvcCache.GetAPIPVC(getPVCName(claim))
607607
if err != nil {
608-
return false, fmt.Errorf("failed to check provisioning pvc: %v", err)
608+
return false, fmt.Errorf("failed to check provisioning pvc: %w", err)
609609
}
610610

611611
// Because we updated PVC in apiserver, skip if API object is older
@@ -637,7 +637,7 @@ func (b *volumeBinder) checkBindings(pod *v1.Pod, bindings []*BindingInfo, claim
637637
// be unbound eventually.
638638
return false, nil
639639
}
640-
return false, fmt.Errorf("failed to get pv %q from cache: %v", pvc.Spec.VolumeName, err)
640+
return false, fmt.Errorf("failed to get pv %q from cache: %w", pvc.Spec.VolumeName, err)
641641
}
642642

643643
pv, err = b.tryTranslatePVToCSI(pv, csiNode)
@@ -646,7 +646,7 @@ func (b *volumeBinder) checkBindings(pod *v1.Pod, bindings []*BindingInfo, claim
646646
}
647647

648648
if err := volumeutil.CheckNodeAffinity(pv, node.Labels); err != nil {
649-
return false, fmt.Errorf("pv %q node affinity doesn't match node %q: %v", pv.Name, node.Name, err)
649+
return false, fmt.Errorf("pv %q node affinity doesn't match node %q: %w", pv.Name, node.Name, err)
650650
}
651651
}
652652

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func (pl *VolumeBinding) PreFilter(ctx context.Context, state *framework.CycleSt
9999
}
100100
boundClaims, claimsToBind, unboundClaimsImmediate, err := pl.Binder.GetPodVolumes(pod)
101101
if err != nil {
102-
return framework.NewStatus(framework.Error, err.Error())
102+
return framework.AsStatus(err)
103103
}
104104
if len(unboundClaimsImmediate) > 0 {
105105
// Return UnschedulableAndUnresolvable error if immediate claims are
@@ -153,7 +153,7 @@ func (pl *VolumeBinding) Filter(ctx context.Context, cs *framework.CycleState, p
153153

154154
state, err := getStateData(cs)
155155
if err != nil {
156-
return framework.NewStatus(framework.Error, err.Error())
156+
return framework.AsStatus(err)
157157
}
158158

159159
if state.skip {
@@ -184,14 +184,14 @@ func (pl *VolumeBinding) Filter(ctx context.Context, cs *framework.CycleState, p
184184
func (pl *VolumeBinding) Reserve(ctx context.Context, cs *framework.CycleState, pod *v1.Pod, nodeName string) *framework.Status {
185185
state, err := getStateData(cs)
186186
if err != nil {
187-
return framework.NewStatus(framework.Error, err.Error())
187+
return framework.AsStatus(err)
188188
}
189189
// we don't need to hold the lock as only one node will be reserved for the given pod
190190
podVolumes, ok := state.podVolumesByNode[nodeName]
191191
if ok {
192192
allBound, err := pl.Binder.AssumePodVolumes(pod, nodeName, podVolumes)
193193
if err != nil {
194-
return framework.NewStatus(framework.Error, err.Error())
194+
return framework.AsStatus(err)
195195
}
196196
state.allBound = allBound
197197
} else {
@@ -209,7 +209,7 @@ func (pl *VolumeBinding) Reserve(ctx context.Context, cs *framework.CycleState,
209209
func (pl *VolumeBinding) PreBind(ctx context.Context, cs *framework.CycleState, pod *v1.Pod, nodeName string) *framework.Status {
210210
s, err := getStateData(cs)
211211
if err != nil {
212-
return framework.NewStatus(framework.Error, err.Error())
212+
return framework.AsStatus(err)
213213
}
214214
if s.allBound {
215215
// no need to bind volumes
@@ -218,13 +218,13 @@ func (pl *VolumeBinding) PreBind(ctx context.Context, cs *framework.CycleState,
218218
// we don't need to hold the lock as only one node will be pre-bound for the given pod
219219
podVolumes, ok := s.podVolumesByNode[nodeName]
220220
if !ok {
221-
return framework.NewStatus(framework.Error, fmt.Sprintf("no pod volumes found for node %q", nodeName))
221+
return framework.AsStatus(fmt.Errorf("no pod volumes found for node %q", nodeName))
222222
}
223223
klog.V(5).Infof("Trying to bind volumes for pod \"%v/%v\"", pod.Namespace, pod.Name)
224224
err = pl.Binder.BindPodVolumes(pod, podVolumes)
225225
if err != nil {
226226
klog.V(1).Infof("Failed to bind volumes for pod \"%v/%v\": %v", pod.Namespace, pod.Name, err)
227-
return framework.NewStatus(framework.Error, err.Error())
227+
return framework.AsStatus(err)
228228
}
229229
klog.V(5).Infof("Success binding volumes for pod \"%v/%v\"", pod.Namespace, pod.Name)
230230
return nil

0 commit comments

Comments
 (0)