Skip to content

Commit

Permalink
Move driver capabilities to a centralized location
Browse files Browse the repository at this point in the history
The previous approach defined driver capabilities in two locations and makes the behaviour confusing
  • Loading branch information
Alex Vest committed Dec 14, 2023
1 parent 89b3744 commit ded8835
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 43 deletions.
33 changes: 33 additions & 0 deletions pkg/linode-bs/capabilities.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package linodebs

import "github.com/container-storage-interface/spec/lib/go/csi"

func controllerCapabilities() []csi.ControllerServiceCapability_RPC_Type {
return []csi.ControllerServiceCapability_RPC_Type{
csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
csi.ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME,
// csi.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT,
// csi.ControllerServiceCapability_RPC_LIST_SNAPSHOTS,
csi.ControllerServiceCapability_RPC_PUBLISH_READONLY,
csi.ControllerServiceCapability_RPC_EXPAND_VOLUME,
csi.ControllerServiceCapability_RPC_CLONE_VOLUME,
csi.ControllerServiceCapability_RPC_LIST_VOLUMES,
csi.ControllerServiceCapability_RPC_VOLUME_CONDITION,
}
}

func nodeCapabilities() []csi.NodeServiceCapability_RPC_Type {
return []csi.NodeServiceCapability_RPC_Type{
csi.NodeServiceCapability_RPC_STAGE_UNSTAGE_VOLUME,
csi.NodeServiceCapability_RPC_EXPAND_VOLUME,
csi.NodeServiceCapability_RPC_GET_VOLUME_STATS,
csi.NodeServiceCapability_RPC_VOLUME_CONDITION,
}
}

func volumeCapabilitiesAccessMode() []csi.VolumeCapability_AccessMode_Mode {
return []csi.VolumeCapability_AccessMode_Mode{
csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
// csi.VolumeCapability_AccessMode_MULTI_NODE_READER_ONLY,
}
}
23 changes: 1 addition & 22 deletions pkg/linode-bs/controllerserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -435,29 +435,8 @@ func (linodeCS *LinodeControllerServer) ControllerGetVolume(ctx context.Context,

// ControllerGetCapabilities returns the supported capabilities of controller service provided by this Plugin
func (linodeCS *LinodeControllerServer) ControllerGetCapabilities(ctx context.Context, req *csi.ControllerGetCapabilitiesRequest) (*csi.ControllerGetCapabilitiesResponse, error) {
newCap := func(cap csi.ControllerServiceCapability_RPC_Type) *csi.ControllerServiceCapability {
return &csi.ControllerServiceCapability{
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: cap,
},
},
}
}

var caps []*csi.ControllerServiceCapability
for _, capability := range []csi.ControllerServiceCapability_RPC_Type{
csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
csi.ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME,
csi.ControllerServiceCapability_RPC_LIST_VOLUMES,
csi.ControllerServiceCapability_RPC_EXPAND_VOLUME,
csi.ControllerServiceCapability_RPC_CLONE_VOLUME,
} {
caps = append(caps, newCap(capability))
}

resp := &csi.ControllerGetCapabilitiesResponse{
Capabilities: caps,
Capabilities: linodeCS.Driver.cscap,
}

klog.V(4).Infoln("controller get capabilities called", map[string]interface{}{
Expand Down
24 changes: 3 additions & 21 deletions pkg/linode-bs/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,33 +73,15 @@ func (linodeDriver *LinodeDriver) SetupLinodeDriver(linodeClient linodeclient.Li
linodeDriver.bsPrefix = bsPrefix

// Adding Capabilities
vcam := []csi.VolumeCapability_AccessMode_Mode{
csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
// csi.VolumeCapability_AccessMode_MULTI_NODE_READER_ONLY,
}
vcam := volumeCapabilitiesAccessMode()
if err := linodeDriver.AddVolumeCapabilityAccessModes(vcam); err != nil {
return err
}
csc := []csi.ControllerServiceCapability_RPC_Type{
csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
csi.ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME,
// csi.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT,
// csi.ControllerServiceCapability_RPC_LIST_SNAPSHOTS,
csi.ControllerServiceCapability_RPC_PUBLISH_READONLY,
csi.ControllerServiceCapability_RPC_EXPAND_VOLUME,
csi.ControllerServiceCapability_RPC_CLONE_VOLUME,
csi.ControllerServiceCapability_RPC_LIST_VOLUMES,
csi.ControllerServiceCapability_RPC_VOLUME_CONDITION,
}
csc := controllerCapabilities()
if err := linodeDriver.AddControllerServiceCapabilities(csc); err != nil {
return err
}
ns := []csi.NodeServiceCapability_RPC_Type{
csi.NodeServiceCapability_RPC_STAGE_UNSTAGE_VOLUME,
csi.NodeServiceCapability_RPC_EXPAND_VOLUME,
csi.NodeServiceCapability_RPC_GET_VOLUME_STATS,
csi.NodeServiceCapability_RPC_VOLUME_CONDITION,
}
ns := nodeCapabilities()
if err := linodeDriver.AddNodeServiceCapabilities(ns); err != nil {
return err
}
Expand Down

0 comments on commit ded8835

Please sign in to comment.