github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/plugins/csi/testing/client.go (about) 1 package testing 2 3 import ( 4 "context" 5 "fmt" 6 7 csipbv1 "github.com/container-storage-interface/spec/lib/go/csi" 8 "google.golang.org/grpc" 9 ) 10 11 // IdentityClient is a CSI identity client used for testing 12 type IdentityClient struct { 13 NextErr error 14 NextPluginInfo *csipbv1.GetPluginInfoResponse 15 NextPluginCapabilities *csipbv1.GetPluginCapabilitiesResponse 16 NextPluginProbe *csipbv1.ProbeResponse 17 } 18 19 // NewIdentityClient returns a new IdentityClient 20 func NewIdentityClient() *IdentityClient { 21 return &IdentityClient{} 22 } 23 24 func (f *IdentityClient) Reset() { 25 f.NextErr = nil 26 f.NextPluginInfo = nil 27 f.NextPluginCapabilities = nil 28 f.NextPluginProbe = nil 29 } 30 31 // GetPluginInfo returns plugin info 32 func (f *IdentityClient) GetPluginInfo(ctx context.Context, in *csipbv1.GetPluginInfoRequest, opts ...grpc.CallOption) (*csipbv1.GetPluginInfoResponse, error) { 33 return f.NextPluginInfo, f.NextErr 34 } 35 36 // GetPluginCapabilities implements csi method 37 func (f *IdentityClient) GetPluginCapabilities(ctx context.Context, in *csipbv1.GetPluginCapabilitiesRequest, opts ...grpc.CallOption) (*csipbv1.GetPluginCapabilitiesResponse, error) { 38 return f.NextPluginCapabilities, f.NextErr 39 } 40 41 // Probe implements csi method 42 func (f *IdentityClient) Probe(ctx context.Context, in *csipbv1.ProbeRequest, opts ...grpc.CallOption) (*csipbv1.ProbeResponse, error) { 43 return f.NextPluginProbe, f.NextErr 44 } 45 46 // ControllerClient is a CSI controller client used for testing 47 type ControllerClient struct { 48 NextErr error 49 NextCapabilitiesResponse *csipbv1.ControllerGetCapabilitiesResponse 50 NextPublishVolumeResponse *csipbv1.ControllerPublishVolumeResponse 51 NextUnpublishVolumeResponse *csipbv1.ControllerUnpublishVolumeResponse 52 NextValidateVolumeCapabilitiesResponse *csipbv1.ValidateVolumeCapabilitiesResponse 53 NextCreateVolumeResponse *csipbv1.CreateVolumeResponse 54 NextDeleteVolumeResponse *csipbv1.DeleteVolumeResponse 55 NextListVolumesResponse *csipbv1.ListVolumesResponse 56 NextCreateSnapshotResponse *csipbv1.CreateSnapshotResponse 57 NextDeleteSnapshotResponse *csipbv1.DeleteSnapshotResponse 58 NextListSnapshotsResponse *csipbv1.ListSnapshotsResponse 59 } 60 61 // NewControllerClient returns a new ControllerClient 62 func NewControllerClient() *ControllerClient { 63 return &ControllerClient{} 64 } 65 66 func (c *ControllerClient) Reset() { 67 c.NextErr = nil 68 c.NextCapabilitiesResponse = nil 69 c.NextPublishVolumeResponse = nil 70 c.NextUnpublishVolumeResponse = nil 71 c.NextValidateVolumeCapabilitiesResponse = nil 72 c.NextCreateVolumeResponse = nil 73 c.NextDeleteVolumeResponse = nil 74 c.NextListVolumesResponse = nil 75 c.NextCreateSnapshotResponse = nil 76 c.NextDeleteSnapshotResponse = nil 77 c.NextListSnapshotsResponse = nil 78 } 79 80 func (c *ControllerClient) ControllerGetCapabilities(ctx context.Context, in *csipbv1.ControllerGetCapabilitiesRequest, opts ...grpc.CallOption) (*csipbv1.ControllerGetCapabilitiesResponse, error) { 81 return c.NextCapabilitiesResponse, c.NextErr 82 } 83 84 func (c *ControllerClient) ControllerPublishVolume(ctx context.Context, in *csipbv1.ControllerPublishVolumeRequest, opts ...grpc.CallOption) (*csipbv1.ControllerPublishVolumeResponse, error) { 85 return c.NextPublishVolumeResponse, c.NextErr 86 } 87 88 func (c *ControllerClient) ControllerUnpublishVolume(ctx context.Context, in *csipbv1.ControllerUnpublishVolumeRequest, opts ...grpc.CallOption) (*csipbv1.ControllerUnpublishVolumeResponse, error) { 89 return c.NextUnpublishVolumeResponse, c.NextErr 90 } 91 92 func (c *ControllerClient) ValidateVolumeCapabilities(ctx context.Context, in *csipbv1.ValidateVolumeCapabilitiesRequest, opts ...grpc.CallOption) (*csipbv1.ValidateVolumeCapabilitiesResponse, error) { 93 return c.NextValidateVolumeCapabilitiesResponse, c.NextErr 94 } 95 96 func (c *ControllerClient) CreateVolume(ctx context.Context, in *csipbv1.CreateVolumeRequest, opts ...grpc.CallOption) (*csipbv1.CreateVolumeResponse, error) { 97 if in.VolumeContentSource != nil { 98 if in.VolumeContentSource.Type == nil || (in.VolumeContentSource.Type == 99 &csipbv1.VolumeContentSource_Volume{ 100 Volume: &csipbv1.VolumeContentSource_VolumeSource{VolumeId: ""}, 101 }) || (in.VolumeContentSource.Type == 102 &csipbv1.VolumeContentSource_Snapshot{ 103 Snapshot: &csipbv1.VolumeContentSource_SnapshotSource{SnapshotId: ""}, 104 }) { 105 return nil, fmt.Errorf("empty content source should be nil") 106 } 107 } 108 return c.NextCreateVolumeResponse, c.NextErr 109 } 110 111 func (c *ControllerClient) DeleteVolume(ctx context.Context, in *csipbv1.DeleteVolumeRequest, opts ...grpc.CallOption) (*csipbv1.DeleteVolumeResponse, error) { 112 return c.NextDeleteVolumeResponse, c.NextErr 113 } 114 115 func (c *ControllerClient) ListVolumes(ctx context.Context, in *csipbv1.ListVolumesRequest, opts ...grpc.CallOption) (*csipbv1.ListVolumesResponse, error) { 116 return c.NextListVolumesResponse, c.NextErr 117 } 118 119 func (c *ControllerClient) CreateSnapshot(ctx context.Context, in *csipbv1.CreateSnapshotRequest, opts ...grpc.CallOption) (*csipbv1.CreateSnapshotResponse, error) { 120 return c.NextCreateSnapshotResponse, c.NextErr 121 } 122 123 func (c *ControllerClient) DeleteSnapshot(ctx context.Context, in *csipbv1.DeleteSnapshotRequest, opts ...grpc.CallOption) (*csipbv1.DeleteSnapshotResponse, error) { 124 return c.NextDeleteSnapshotResponse, c.NextErr 125 } 126 127 func (c *ControllerClient) ListSnapshots(ctx context.Context, in *csipbv1.ListSnapshotsRequest, opts ...grpc.CallOption) (*csipbv1.ListSnapshotsResponse, error) { 128 return c.NextListSnapshotsResponse, c.NextErr 129 } 130 131 // NodeClient is a CSI Node client used for testing 132 type NodeClient struct { 133 NextErr error 134 NextCapabilitiesResponse *csipbv1.NodeGetCapabilitiesResponse 135 NextGetInfoResponse *csipbv1.NodeGetInfoResponse 136 NextStageVolumeResponse *csipbv1.NodeStageVolumeResponse 137 NextUnstageVolumeResponse *csipbv1.NodeUnstageVolumeResponse 138 NextPublishVolumeResponse *csipbv1.NodePublishVolumeResponse 139 NextUnpublishVolumeResponse *csipbv1.NodeUnpublishVolumeResponse 140 } 141 142 // NewNodeClient returns a new stub NodeClient 143 func NewNodeClient() *NodeClient { 144 return &NodeClient{} 145 } 146 147 func (c *NodeClient) Reset() { 148 c.NextErr = nil 149 c.NextCapabilitiesResponse = nil 150 c.NextGetInfoResponse = nil 151 c.NextStageVolumeResponse = nil 152 c.NextUnstageVolumeResponse = nil 153 c.NextPublishVolumeResponse = nil 154 c.NextUnpublishVolumeResponse = nil 155 } 156 157 func (c *NodeClient) NodeGetCapabilities(ctx context.Context, in *csipbv1.NodeGetCapabilitiesRequest, opts ...grpc.CallOption) (*csipbv1.NodeGetCapabilitiesResponse, error) { 158 return c.NextCapabilitiesResponse, c.NextErr 159 } 160 161 func (c *NodeClient) NodeGetInfo(ctx context.Context, in *csipbv1.NodeGetInfoRequest, opts ...grpc.CallOption) (*csipbv1.NodeGetInfoResponse, error) { 162 return c.NextGetInfoResponse, c.NextErr 163 } 164 165 func (c *NodeClient) NodeStageVolume(ctx context.Context, in *csipbv1.NodeStageVolumeRequest, opts ...grpc.CallOption) (*csipbv1.NodeStageVolumeResponse, error) { 166 return c.NextStageVolumeResponse, c.NextErr 167 } 168 169 func (c *NodeClient) NodeUnstageVolume(ctx context.Context, in *csipbv1.NodeUnstageVolumeRequest, opts ...grpc.CallOption) (*csipbv1.NodeUnstageVolumeResponse, error) { 170 return c.NextUnstageVolumeResponse, c.NextErr 171 } 172 173 func (c *NodeClient) NodePublishVolume(ctx context.Context, in *csipbv1.NodePublishVolumeRequest, opts ...grpc.CallOption) (*csipbv1.NodePublishVolumeResponse, error) { 174 return c.NextPublishVolumeResponse, c.NextErr 175 } 176 177 func (c *NodeClient) NodeUnpublishVolume(ctx context.Context, in *csipbv1.NodeUnpublishVolumeRequest, opts ...grpc.CallOption) (*csipbv1.NodeUnpublishVolumeResponse, error) { 178 return c.NextUnpublishVolumeResponse, c.NextErr 179 }