...
1
16
17 package volumebinding
18
19 import (
20 "context"
21
22 v1 "k8s.io/api/core/v1"
23 "k8s.io/apimachinery/pkg/util/sets"
24 "k8s.io/klog/v2"
25 )
26
27
28 type FakeVolumeBinderConfig struct {
29 AllBound bool
30 FindReasons ConflictReasons
31 FindErr error
32 AssumeErr error
33 BindErr error
34 }
35
36
37
38 func NewFakeVolumeBinder(config *FakeVolumeBinderConfig) *FakeVolumeBinder {
39 return &FakeVolumeBinder{
40 config: config,
41 }
42 }
43
44
45 type FakeVolumeBinder struct {
46 config *FakeVolumeBinderConfig
47 AssumeCalled bool
48 BindCalled bool
49 }
50
51 var _ SchedulerVolumeBinder = &FakeVolumeBinder{}
52
53
54 func (b *FakeVolumeBinder) GetPodVolumeClaims(_ klog.Logger, pod *v1.Pod) (podVolumeClaims *PodVolumeClaims, err error) {
55 return &PodVolumeClaims{}, nil
56 }
57
58
59 func (b *FakeVolumeBinder) GetEligibleNodes(_ klog.Logger, boundClaims []*v1.PersistentVolumeClaim) (eligibleNodes sets.Set[string]) {
60 return nil
61 }
62
63
64 func (b *FakeVolumeBinder) FindPodVolumes(_ klog.Logger, pod *v1.Pod, _ *PodVolumeClaims, node *v1.Node) (podVolumes *PodVolumes, reasons ConflictReasons, err error) {
65 return nil, b.config.FindReasons, b.config.FindErr
66 }
67
68
69 func (b *FakeVolumeBinder) AssumePodVolumes(_ klog.Logger, assumedPod *v1.Pod, nodeName string, podVolumes *PodVolumes) (bool, error) {
70 b.AssumeCalled = true
71 return b.config.AllBound, b.config.AssumeErr
72 }
73
74
75 func (b *FakeVolumeBinder) RevertAssumedPodVolumes(_ *PodVolumes) {}
76
77
78 func (b *FakeVolumeBinder) BindPodVolumes(ctx context.Context, assumedPod *v1.Pod, podVolumes *PodVolumes) error {
79 b.BindCalled = true
80 return b.config.BindErr
81 }
82
View as plain text