Skip to content

Commit

Permalink
csi-driver: ignore controller CREATE_DELETE_VOLUME capabilities in vm…
Browse files Browse the repository at this point in the history
… mode
  • Loading branch information
antonmyagkov committed Oct 9, 2024
1 parent c2bb30e commit 524a9bf
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
26 changes: 23 additions & 3 deletions cloud/blockstore/tools/csi_driver/internal/driver/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package driver

import (
"context"
"fmt"
"log"

"github.com/container-storage-interface/spec/lib/go/csi"
Expand All @@ -18,7 +19,7 @@ import (

const diskBlockSize uint32 = 4 * 1024

var nbsServerControllerServiceCapabilities = []*csi.ControllerServiceCapability{
var podModeControllerServiceCapabilities = []*csi.ControllerServiceCapability{
{
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Expand All @@ -28,6 +29,8 @@ var nbsServerControllerServiceCapabilities = []*csi.ControllerServiceCapability{
},
}

var vmModeControllerServiceCapabilities = []*csi.ControllerServiceCapability{}

func getStorageMediaKind(parameters map[string]string) storagecoreapi.EStorageMediaKind {
kind, ok := parameters["storage-media-kind"]
if ok {
Expand Down Expand Up @@ -61,15 +64,18 @@ type nbsServerControllerService struct {

nbsClient nbsclient.ClientIface
nfsClient nfsclient.ClientIface
vmMode bool
}

func newNBSServerControllerService(
nbsClient nbsclient.ClientIface,
nfsClient nfsclient.ClientIface) csi.ControllerServer {
nfsClient nfsclient.ClientIface,
vmMode bool) csi.ControllerServer {

return &nbsServerControllerService{
nbsClient: nbsClient,
nfsClient: nfsClient,
vmMode: vmMode,
}
}

Expand All @@ -79,6 +85,10 @@ func (c *nbsServerControllerService) CreateVolume(

log.Printf("csi.CreateVolumeRequest: %+v", req)

if c.vmMode {
return nil, fmt.Errorf("CreateVolume is not supported in vmMode")
}

if req.Name == "" {
return nil, status.Error(
codes.InvalidArgument,
Expand Down Expand Up @@ -191,6 +201,10 @@ func (c *nbsServerControllerService) DeleteVolume(

log.Printf("csi.DeleteVolumeRequest: %+v", req)

if c.vmMode {
return nil, fmt.Errorf("DeleteVolume is not supported in vmMode")
}

if req.VolumeId == "" {
return nil, status.Error(
codes.InvalidArgument,
Expand Down Expand Up @@ -266,7 +280,13 @@ func (c *nbsServerControllerService) ControllerGetCapabilities(
req *csi.ControllerGetCapabilitiesRequest,
) (*csi.ControllerGetCapabilitiesResponse, error) {

if c.vmMode {
return &csi.ControllerGetCapabilitiesResponse{
Capabilities: vmModeControllerServiceCapabilities,
}, nil
}

return &csi.ControllerGetCapabilitiesResponse{
Capabilities: nbsServerControllerServiceCapabilities,
Capabilities: podModeControllerServiceCapabilities,
}, nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ func NewDriver(cfg Config) (*Driver, error) {

csi.RegisterControllerServer(
grpcServer,
newNBSServerControllerService(nbsClient, nfsClient))
newNBSServerControllerService(nbsClient, nfsClient, cfg.VMMode))

csi.RegisterNodeServer(
grpcServer,
Expand Down

0 comments on commit 524a9bf

Please sign in to comment.