diff --git a/cmd/cinder-csi-plugin/main.go b/cmd/cinder-csi-plugin/main.go index e635846e28..9f3989a2ea 100644 --- a/cmd/cinder-csi-plugin/main.go +++ b/cmd/cinder-csi-plugin/main.go @@ -21,20 +21,23 @@ import ( "fmt" "os" - "github.com/spf13/cobra" - "github.com/spf13/pflag" "k8s.io/cloud-provider-openstack/pkg/csi/cinder" "k8s.io/cloud-provider-openstack/pkg/csi/cinder/openstack" "k8s.io/cloud-provider-openstack/pkg/util/mount" + + "github.com/spf13/cobra" + "github.com/spf13/pflag" "k8s.io/component-base/logs" "k8s.io/klog" ) var ( - endpoint string - nodeID string - cloudconfig string - cluster string + cloudconfig string + cluster string + endpoint string + nodeID string + runControllerService bool + runNodeService bool ) func init() { @@ -73,16 +76,20 @@ func main() { cmd.Flags().AddGoFlagSet(flag.CommandLine) - cmd.PersistentFlags().StringVar(&nodeID, "nodeid", "", "node id") - cmd.MarkPersistentFlagRequired("nodeid") + cmd.PersistentFlags().StringVar(&cloudconfig, "cloud-config", "", "CSI driver cloud config") + cmd.MarkPersistentFlagRequired("cloud-config") + + cmd.PersistentFlags().StringVar(&cluster, "cluster", "", "The identifier of the cluster that the plugin is running in.") cmd.PersistentFlags().StringVar(&endpoint, "endpoint", "", "CSI endpoint") cmd.MarkPersistentFlagRequired("endpoint") - cmd.PersistentFlags().StringVar(&cloudconfig, "cloud-config", "", "CSI driver cloud config") - cmd.MarkPersistentFlagRequired("cloud-config") + cmd.PersistentFlags().StringVar(&nodeID, "nodeid", "", "node id") + cmd.MarkPersistentFlagRequired("nodeid") - cmd.PersistentFlags().StringVar(&cluster, "cluster", "", "The identifier of the cluster that the plugin is running in.") + cmd.PersistentFlags().BoolVar(&runControllerService, "run-controller-service", true, "If set to false then the CSI driver does not activate its controller service (default: true)") + + cmd.PersistentFlags().BoolVar(&runNodeService, "run-node-service", true, "If set to false then the CSI driver does not activate its node service (default: true)") openstack.AddExtraFlags(pflag.CommandLine) @@ -98,30 +105,43 @@ func main() { } func handle() { - d := cinder.NewDriver(nodeID, endpoint, cluster) - //Intiliaze mount - mount, err := mount.GetMountProvider() + // Initialize cloud + openstack.InitOpenStackProvider(cloudconfig) + cloud, err := openstack.GetOpenStackProvider() if err != nil { - klog.V(3).Infof("Failed to GetMountProvider: %v", err) + klog.Warningf("Failed to GetOpenStackProvider: %v", err) + return } - //Intiliaze Metadatda - metadatda, err := openstack.GetMetadataProvider() - if err != nil { - klog.V(3).Infof("Failed to GetMetadataProvider: %v", err) + // Initialize driver services + var ( + ids = cinder.NewIdentityServer(d) + cs *cinder.ControllerServer + ns *cinder.NodeServer + ) + + if runControllerService { + cs = cinder.NewControllerServer(d, cloud) } - // Initiliaze cloud - openstack.InitOpenStackProvider(cloudconfig) - cloud, err := openstack.GetOpenStackProvider() + if runNodeService { + // Initialize mount + mount, err := mount.GetMountProvider() + if err != nil { + klog.V(3).Infof("Failed to GetMountProvider: %v", err) + } - if err != nil { - klog.Warningf("Failed to GetOpenStackProvider: %v", err) - return + // Initialize Metadatda + metadata, err := openstack.GetMetadataProvider() + if err != nil { + klog.V(3).Infof("Failed to GetMetadataProvider: %v", err) + } + + ns = cinder.NewNodeServer(d, mount, metadata, cloud) } - d.SetupDriver(cloud, mount, metadatda) + d.SetupDriver(ids, cs, ns) d.Run() } diff --git a/docs/using-cinder-csi-plugin.md b/docs/using-cinder-csi-plugin.md index 0ed19b09ae..3c8201b814 100644 --- a/docs/using-cinder-csi-plugin.md +++ b/docs/using-cinder-csi-plugin.md @@ -560,3 +560,16 @@ CSIVolumeID $ csc node get-id --endpoint tcp://127.0.0.1:10000 CSINodeID ``` + +### Disabling particular driver services + +Traditionally, you run the CSI controllers with the OpenStack Cinder driver in the same Kubernetes cluster. +Though, there may be cases where you will only want to run a subset of the available driver services (for example, one scenario is running the controllers outside of the cluster they are serving (while the OpenStack Cinder driver still runs inside the served cluster), but there might be others scenarios). +The CSI driver consists out of these services: + +* The **controller** service starts the GRPC server that serves `CreateVolume`, `DeleteVolume`, etc. It is depending on the OpenStack cloud config + credentials and talks with the OpenStack API. +* The **identity** service is responsible to provide identity services like capability information of the CSI plugin. +* The **node** service implements the various operations for volumes that are run locally from the node, for example `NodePublishVolume`, `NodeStageVolume`, etc. It does not do operations like `CreateVolume` or `ControllerPublish`. Also, it runs directly on the OpenStack VM instances. It is also depending on the OpenStack cloud config + credentials. + +The CSI driver has two command line flags, `--run-controller-service` and `--run-node-service` which both default to `true`. +You can disable the individual services by setting the respective flags to `false`. diff --git a/pkg/csi/cinder/controllerserver.go b/pkg/csi/cinder/controllerserver.go index 1e8e960e55..1302642b3f 100644 --- a/pkg/csi/cinder/controllerserver.go +++ b/pkg/csi/cinder/controllerserver.go @@ -35,12 +35,12 @@ import ( "k8s.io/klog" ) -type controllerServer struct { +type ControllerServer struct { Driver *CinderDriver Cloud openstack.IOpenStack } -func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error) { +func (cs *ControllerServer) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error) { // Volume Name volName := req.GetName() @@ -120,7 +120,7 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol return getCreateVolumeResponse(vol), nil } -func (cs *controllerServer) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest) (*csi.DeleteVolumeResponse, error) { +func (cs *ControllerServer) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest) (*csi.DeleteVolumeResponse, error) { // Volume Delete volID := req.GetVolumeId() @@ -142,7 +142,7 @@ func (cs *controllerServer) DeleteVolume(ctx context.Context, req *csi.DeleteVol return &csi.DeleteVolumeResponse{}, nil } -func (cs *controllerServer) ControllerPublishVolume(ctx context.Context, req *csi.ControllerPublishVolumeRequest) (*csi.ControllerPublishVolumeResponse, error) { +func (cs *ControllerServer) ControllerPublishVolume(ctx context.Context, req *csi.ControllerPublishVolumeRequest) (*csi.ControllerPublishVolumeResponse, error) { // Volume Attach instanceID := req.GetNodeId() @@ -202,7 +202,7 @@ func (cs *controllerServer) ControllerPublishVolume(ctx context.Context, req *cs }, nil } -func (cs *controllerServer) ControllerUnpublishVolume(ctx context.Context, req *csi.ControllerUnpublishVolumeRequest) (*csi.ControllerUnpublishVolumeResponse, error) { +func (cs *ControllerServer) ControllerUnpublishVolume(ctx context.Context, req *csi.ControllerUnpublishVolumeRequest) (*csi.ControllerUnpublishVolumeResponse, error) { // Volume Detach instanceID := req.GetNodeId() @@ -245,7 +245,7 @@ func (cs *controllerServer) ControllerUnpublishVolume(ctx context.Context, req * return &csi.ControllerUnpublishVolumeResponse{}, nil } -func (cs *controllerServer) ListVolumes(ctx context.Context, req *csi.ListVolumesRequest) (*csi.ListVolumesResponse, error) { +func (cs *ControllerServer) ListVolumes(ctx context.Context, req *csi.ListVolumesRequest) (*csi.ListVolumesResponse, error) { vlist, err := cs.Cloud.ListVolumes() if err != nil { @@ -268,7 +268,7 @@ func (cs *controllerServer) ListVolumes(ctx context.Context, req *csi.ListVolume }, nil } -func (cs *controllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateSnapshotRequest) (*csi.CreateSnapshotResponse, error) { +func (cs *ControllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateSnapshotRequest) (*csi.CreateSnapshotResponse, error) { name := req.Name volumeId := req.SourceVolumeId @@ -333,7 +333,7 @@ func (cs *controllerServer) CreateSnapshot(ctx context.Context, req *csi.CreateS }, nil } -func (cs *controllerServer) DeleteSnapshot(ctx context.Context, req *csi.DeleteSnapshotRequest) (*csi.DeleteSnapshotResponse, error) { +func (cs *ControllerServer) DeleteSnapshot(ctx context.Context, req *csi.DeleteSnapshotRequest) (*csi.DeleteSnapshotResponse, error) { id := req.SnapshotId @@ -354,7 +354,7 @@ func (cs *controllerServer) DeleteSnapshot(ctx context.Context, req *csi.DeleteS return &csi.DeleteSnapshotResponse{}, nil } -func (cs *controllerServer) ListSnapshots(ctx context.Context, req *csi.ListSnapshotsRequest) (*csi.ListSnapshotsResponse, error) { +func (cs *ControllerServer) ListSnapshots(ctx context.Context, req *csi.ListSnapshotsRequest) (*csi.ListSnapshotsResponse, error) { if len(req.GetSnapshotId()) != 0 { snap, err := cs.Cloud.GetSnapshotByID(req.SnapshotId) @@ -429,7 +429,7 @@ func (cs *controllerServer) ListSnapshots(ctx context.Context, req *csi.ListSnap // ControllerGetCapabilities implements the default GRPC callout. // Default supports all capabilities -func (cs *controllerServer) ControllerGetCapabilities(ctx context.Context, req *csi.ControllerGetCapabilitiesRequest) (*csi.ControllerGetCapabilitiesResponse, error) { +func (cs *ControllerServer) ControllerGetCapabilities(ctx context.Context, req *csi.ControllerGetCapabilitiesRequest) (*csi.ControllerGetCapabilitiesResponse, error) { klog.V(5).Infof("Using default ControllerGetCapabilities") return &csi.ControllerGetCapabilitiesResponse{ @@ -437,7 +437,7 @@ func (cs *controllerServer) ControllerGetCapabilities(ctx context.Context, req * }, nil } -func (cs *controllerServer) ValidateVolumeCapabilities(ctx context.Context, req *csi.ValidateVolumeCapabilitiesRequest) (*csi.ValidateVolumeCapabilitiesResponse, error) { +func (cs *ControllerServer) ValidateVolumeCapabilities(ctx context.Context, req *csi.ValidateVolumeCapabilitiesRequest) (*csi.ValidateVolumeCapabilitiesResponse, error) { reqVolCap := req.GetVolumeCapabilities() @@ -478,11 +478,11 @@ func (cs *controllerServer) ValidateVolumeCapabilities(ctx context.Context, req return resp, nil } -func (cs *controllerServer) GetCapacity(ctx context.Context, req *csi.GetCapacityRequest) (*csi.GetCapacityResponse, error) { +func (cs *ControllerServer) GetCapacity(ctx context.Context, req *csi.GetCapacityRequest) (*csi.GetCapacityResponse, error) { return nil, status.Error(codes.Unimplemented, fmt.Sprintf("GetCapacity is not yet implemented")) } -func (cs *controllerServer) ControllerExpandVolume(ctx context.Context, req *csi.ControllerExpandVolumeRequest) (*csi.ControllerExpandVolumeResponse, error) { +func (cs *ControllerServer) ControllerExpandVolume(ctx context.Context, req *csi.ControllerExpandVolumeRequest) (*csi.ControllerExpandVolumeResponse, error) { klog.V(4).Infof("ControllerExpandVolume: called with args %+v", *req) volumeID := req.GetVolumeId() diff --git a/pkg/csi/cinder/controllerserver_test.go b/pkg/csi/cinder/controllerserver_test.go index 9007ea3853..1f114a9862 100644 --- a/pkg/csi/cinder/controllerserver_test.go +++ b/pkg/csi/cinder/controllerserver_test.go @@ -25,7 +25,7 @@ import ( "k8s.io/cloud-provider-openstack/pkg/csi/cinder/openstack" ) -var fakeCs *controllerServer +var fakeCs *ControllerServer var osmock *openstack.OpenStackMock // Init Controller Server diff --git a/pkg/csi/cinder/driver.go b/pkg/csi/cinder/driver.go index 939999bae4..423575a883 100644 --- a/pkg/csi/cinder/driver.go +++ b/pkg/csi/cinder/driver.go @@ -22,8 +22,6 @@ import ( "github.com/container-storage-interface/spec/lib/go/csi" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "k8s.io/cloud-provider-openstack/pkg/csi/cinder/openstack" - "k8s.io/cloud-provider-openstack/pkg/util/mount" "k8s.io/klog" ) @@ -44,9 +42,9 @@ type CinderDriver struct { cloudconfig string cluster string - ids *identityServer - cs *controllerServer - ns *nodeServer + ids *IdentityServer + cs *ControllerServer + ns *NodeServer vcap []*csi.VolumeCapability_AccessMode cscap []*csi.ControllerServiceCapability @@ -135,15 +133,12 @@ func (d *CinderDriver) GetVolumeCapabilityAccessModes() []*csi.VolumeCapability_ return d.vcap } -func (d *CinderDriver) SetupDriver(cloud openstack.IOpenStack, mount mount.IMount, metadata openstack.IMetadata) { - - d.ids = NewIdentityServer(d) - d.cs = NewControllerServer(d, cloud) - d.ns = NewNodeServer(d, mount, metadata, cloud) - +func (d *CinderDriver) SetupDriver(ids *IdentityServer, cs *ControllerServer, ns *NodeServer) { + d.ids = ids + d.cs = cs + d.ns = ns } func (d *CinderDriver) Run() { - - RunControllerandNodePublishServer(d.endpoint, d.ids, d.cs, d.ns) + RunControllerAndNodePublishServer(d.endpoint, d.ids, d.cs, d.ns) } diff --git a/pkg/csi/cinder/identityserver.go b/pkg/csi/cinder/identityserver.go index 0ae5663079..9d50d55368 100644 --- a/pkg/csi/cinder/identityserver.go +++ b/pkg/csi/cinder/identityserver.go @@ -25,11 +25,11 @@ import ( "k8s.io/klog" ) -type identityServer struct { +type IdentityServer struct { Driver *CinderDriver } -func (ids *identityServer) GetPluginInfo(ctx context.Context, req *csi.GetPluginInfoRequest) (*csi.GetPluginInfoResponse, error) { +func (ids *IdentityServer) GetPluginInfo(ctx context.Context, req *csi.GetPluginInfoRequest) (*csi.GetPluginInfoResponse, error) { klog.V(5).Infof("Using default GetPluginInfo") if ids.Driver.name == "" { @@ -46,7 +46,7 @@ func (ids *identityServer) GetPluginInfo(ctx context.Context, req *csi.GetPlugin }, nil } -func (ids *identityServer) Probe(ctx context.Context, req *csi.ProbeRequest) (*csi.ProbeResponse, error) { +func (ids *IdentityServer) Probe(ctx context.Context, req *csi.ProbeRequest) (*csi.ProbeResponse, error) { klog.V(5).Infof("Probe() called with req %+v", req) oProvider, err := openstack.GetOpenStackProvider() if err != nil { @@ -60,7 +60,7 @@ func (ids *identityServer) Probe(ctx context.Context, req *csi.ProbeRequest) (*c return &csi.ProbeResponse{}, nil } -func (ids *identityServer) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error) { +func (ids *IdentityServer) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error) { klog.V(5).Infof("GetPluginCapabilities called with req %+v", req) return &csi.GetPluginCapabilitiesResponse{ Capabilities: []*csi.PluginCapability{ diff --git a/pkg/csi/cinder/nodeserver.go b/pkg/csi/cinder/nodeserver.go index 536c1277c1..edefd99b9a 100644 --- a/pkg/csi/cinder/nodeserver.go +++ b/pkg/csi/cinder/nodeserver.go @@ -39,14 +39,14 @@ import ( "k8s.io/cloud-provider-openstack/pkg/util/mount" ) -type nodeServer struct { +type NodeServer struct { Driver *CinderDriver Mount mount.IMount Metadata openstack.IMetadata Cloud openstack.IOpenStack } -func (ns *nodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolumeRequest) (*csi.NodePublishVolumeResponse, error) { +func (ns *NodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolumeRequest) (*csi.NodePublishVolumeResponse, error) { klog.V(4).Infof("NodePublishVolume: called with args %+v", *req) volumeID := req.GetVolumeId() @@ -117,7 +117,7 @@ func (ns *nodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis return &csi.NodePublishVolumeResponse{}, nil } -func nodePublishEphermeral(req *csi.NodePublishVolumeRequest, ns *nodeServer) (*csi.NodePublishVolumeResponse, error) { +func nodePublishEphermeral(req *csi.NodePublishVolumeRequest, ns *NodeServer) (*csi.NodePublishVolumeResponse, error) { var size int var err error @@ -205,7 +205,7 @@ func nodePublishEphermeral(req *csi.NodePublishVolumeRequest, ns *nodeServer) (* } -func nodePublishVolumeForBlock(req *csi.NodePublishVolumeRequest, ns *nodeServer, mountOptions []string) (*csi.NodePublishVolumeResponse, error) { +func nodePublishVolumeForBlock(req *csi.NodePublishVolumeRequest, ns *NodeServer, mountOptions []string) (*csi.NodePublishVolumeResponse, error) { klog.V(4).Infof("NodePublishVolumeBlock: called with args %+v", *req) volumeID := req.GetVolumeId() @@ -244,7 +244,7 @@ func nodePublishVolumeForBlock(req *csi.NodePublishVolumeRequest, ns *nodeServer return &csi.NodePublishVolumeResponse{}, nil } -func (ns *nodeServer) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpublishVolumeRequest) (*csi.NodeUnpublishVolumeResponse, error) { +func (ns *NodeServer) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpublishVolumeRequest) (*csi.NodeUnpublishVolumeResponse, error) { klog.V(4).Infof("NodeUnPublishVolume: called with args %+v", *req) volumeID := req.GetVolumeId() @@ -308,7 +308,7 @@ func (ns *nodeServer) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpu } -func nodeUnpublishEphermeral(req *csi.NodeUnpublishVolumeRequest, ns *nodeServer, vol *volumes.Volume) (*csi.NodeUnpublishVolumeResponse, error) { +func nodeUnpublishEphermeral(req *csi.NodeUnpublishVolumeRequest, ns *NodeServer, vol *volumes.Volume) (*csi.NodeUnpublishVolumeResponse, error) { volumeID := vol.ID var instanceID string @@ -339,7 +339,7 @@ func nodeUnpublishEphermeral(req *csi.NodeUnpublishVolumeRequest, ns *nodeServer return &csi.NodeUnpublishVolumeResponse{}, nil } -func (ns *nodeServer) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRequest) (*csi.NodeStageVolumeResponse, error) { +func (ns *NodeServer) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRequest) (*csi.NodeStageVolumeResponse, error) { klog.V(4).Infof("NodeStageVolume: called with args %+v", *req) stagingTarget := req.GetStagingTargetPath() @@ -405,7 +405,7 @@ func (ns *nodeServer) NodeStageVolume(ctx context.Context, req *csi.NodeStageVol return &csi.NodeStageVolumeResponse{}, nil } -func (ns *nodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstageVolumeRequest) (*csi.NodeUnstageVolumeResponse, error) { +func (ns *NodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstageVolumeRequest) (*csi.NodeUnstageVolumeResponse, error) { klog.V(4).Infof("NodeUnstageVolume: called with args %+v", *req) volumeID := req.GetVolumeId() @@ -448,7 +448,7 @@ func (ns *nodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstag return &csi.NodeUnstageVolumeResponse{}, nil } -func (ns *nodeServer) NodeGetInfo(ctx context.Context, req *csi.NodeGetInfoRequest) (*csi.NodeGetInfoResponse, error) { +func (ns *NodeServer) NodeGetInfo(ctx context.Context, req *csi.NodeGetInfoRequest) (*csi.NodeGetInfoResponse, error) { nodeID, err := getNodeID(ns.Mount, ns.Metadata, ns.Cloud.GetMetadataOpts().SearchOrder) if err != nil { @@ -470,7 +470,7 @@ func (ns *nodeServer) NodeGetInfo(ctx context.Context, req *csi.NodeGetInfoReque }, nil } -func (ns *nodeServer) NodeGetCapabilities(ctx context.Context, req *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error) { +func (ns *NodeServer) NodeGetCapabilities(ctx context.Context, req *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error) { klog.V(5).Infof("NodeGetCapabilities called with req: %#v", req) return &csi.NodeGetCapabilitiesResponse{ @@ -478,7 +478,7 @@ func (ns *nodeServer) NodeGetCapabilities(ctx context.Context, req *csi.NodeGetC }, nil } -func (ns *nodeServer) NodeGetVolumeStats(_ context.Context, req *csi.NodeGetVolumeStatsRequest) (*csi.NodeGetVolumeStatsResponse, error) { +func (ns *NodeServer) NodeGetVolumeStats(_ context.Context, req *csi.NodeGetVolumeStatsRequest) (*csi.NodeGetVolumeStatsResponse, error) { klog.V(4).Infof("NodeGetVolumeStats: called with args %+v", *req) volumeID := req.GetVolumeId() @@ -523,7 +523,7 @@ func (ns *nodeServer) NodeGetVolumeStats(_ context.Context, req *csi.NodeGetVolu }, nil } -func (ns *nodeServer) NodeExpandVolume(ctx context.Context, req *csi.NodeExpandVolumeRequest) (*csi.NodeExpandVolumeResponse, error) { +func (ns *NodeServer) NodeExpandVolume(ctx context.Context, req *csi.NodeExpandVolumeRequest) (*csi.NodeExpandVolumeResponse, error) { klog.V(4).Infof("NodeExpandVolume: called with args %+v", *req) volumeID := req.GetVolumeId() diff --git a/pkg/csi/cinder/nodeserver_test.go b/pkg/csi/cinder/nodeserver_test.go index 1f68874b69..e79edd885f 100644 --- a/pkg/csi/cinder/nodeserver_test.go +++ b/pkg/csi/cinder/nodeserver_test.go @@ -27,7 +27,7 @@ import ( "k8s.io/cloud-provider-openstack/pkg/util/mount" ) -var fakeNs *nodeServer +var fakeNs *NodeServer var mmock *mount.MountMock var omock *openstack.OpenStackMock diff --git a/pkg/csi/cinder/sanity/sanity_test.go b/pkg/csi/cinder/sanity/sanity_test.go index 1ca6d74712..4edc7d332b 100644 --- a/pkg/csi/cinder/sanity/sanity_test.go +++ b/pkg/csi/cinder/sanity/sanity_test.go @@ -30,7 +30,13 @@ func TestDriver(t *testing.T) { fakemnt := &fakemount{} fakemet := &fakemetadata{} - d.SetupDriver(c, fakemnt, fakemet) + var ( + ids = cinder.NewIdentityServer(d) + cs = cinder.NewControllerServer(d, c) + ns = cinder.NewNodeServer(d, fakemnt, fakemet, c) + ) + + d.SetupDriver(ids, cs, ns) // TODO: Stop call diff --git a/pkg/csi/cinder/utils.go b/pkg/csi/cinder/utils.go index f40947a453..54c4be3fcc 100644 --- a/pkg/csi/cinder/utils.go +++ b/pkg/csi/cinder/utils.go @@ -36,21 +36,21 @@ func NewVolumeCapabilityAccessMode(mode csi.VolumeCapability_AccessMode_Mode) *c return &csi.VolumeCapability_AccessMode{Mode: mode} } -func NewControllerServer(d *CinderDriver, cloud openstack.IOpenStack) *controllerServer { - return &controllerServer{ +func NewControllerServer(d *CinderDriver, cloud openstack.IOpenStack) *ControllerServer { + return &ControllerServer{ Driver: d, Cloud: cloud, } } -func NewIdentityServer(d *CinderDriver) *identityServer { - return &identityServer{ +func NewIdentityServer(d *CinderDriver) *IdentityServer { + return &IdentityServer{ Driver: d, } } -func NewNodeServer(d *CinderDriver, mount mount.IMount, metadata openstack.IMetadata, cloud openstack.IOpenStack) *nodeServer { - return &nodeServer{ +func NewNodeServer(d *CinderDriver, mount mount.IMount, metadata openstack.IMetadata, cloud openstack.IOpenStack) *NodeServer { + return &NodeServer{ Driver: d, Mount: mount, Metadata: metadata, @@ -58,8 +58,7 @@ func NewNodeServer(d *CinderDriver, mount mount.IMount, metadata openstack.IMeta } } -func RunControllerandNodePublishServer(endpoint string, ids csi.IdentityServer, cs csi.ControllerServer, ns csi.NodeServer) { - +func RunControllerAndNodePublishServer(endpoint string, ids csi.IdentityServer, cs csi.ControllerServer, ns csi.NodeServer) { s := NewNonBlockingGRPCServer() s.Start(endpoint, ids, cs, ns) s.Wait()