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  }