Skip to content

Commit

Permalink
Merge pull request #370 from dell/pub/max-entires
Browse files Browse the repository at this point in the history
Add ListVolumes Capability
  • Loading branch information
karthikk92 authored Dec 9, 2024
2 parents a37bcaf + bb6d31d commit 9f67ab8
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 10 deletions.
31 changes: 22 additions & 9 deletions service/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -1881,7 +1881,6 @@ func (s *service) ListVolumes(
}
i = i + 1
}

return &csi.ListVolumesResponse{
Entries: entries,
NextToken: nextToken,
Expand Down Expand Up @@ -2320,56 +2319,56 @@ func (s *service) ControllerGetCapabilities(
*csi.ControllerGetCapabilitiesResponse, error,
) {
capabilities := []*csi.ControllerServiceCapability{
{
{ // Required for Create/Delete Volume
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
},
},
},
{
{ // Required for ControllerPublish and ControllerUnpublish Volume
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME,
},
},
},
{
{ // Required for GetCapacity
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_GET_CAPACITY,
},
},
},
{
{ // Required for CreateSnapshot and DeleteSnapshot
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT,
},
},
},
{
{ // Required for ListSnapshots
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_LIST_SNAPSHOTS,
},
},
},
{
{ // Required for ControllerExpandVolume
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_EXPAND_VOLUME,
},
},
},
{
{ // Required for Clone
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_CLONE_VOLUME,
},
},
},
{
{ // Indicates PowerFlex supports SINGLE_NODE_SINGLE_WRITER and/or SINGLE_NODE_MULTI_WRITER access modes
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_SINGLE_NODE_MULTI_WRITER,
Expand All @@ -2380,23 +2379,37 @@ func (s *service) ControllerGetCapabilities(

healthMonitorCapabilities := []*csi.ControllerServiceCapability{
{
// Required for health monitor, optional if Health monitor is disabled
// Indicates driver can report on volume condition in controller plugin
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_VOLUME_CONDITION,
},
},
},
{
// Required for ControllerGetVolume which is only required if health monitor is enabled
// Optional if ListVolumes capabilty is also being returned
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_GET_VOLUME,
},
},
},
}
ListVolumesCapability := csi.ControllerServiceCapability{
// Optional capability only returned when health monitor is not enabled. This is so health monitor will use GetVolume call instead of ListVolumes
Type: &csi.ControllerServiceCapability_Rpc{
Rpc: &csi.ControllerServiceCapability_RPC{
Type: csi.ControllerServiceCapability_RPC_LIST_VOLUMES,
},
},
}

if s.opts.IsHealthMonitorEnabled {
capabilities = append(capabilities, healthMonitorCapabilities...)
} else {
capabilities = append(capabilities, &ListVolumesCapability)
}

return &csi.ControllerGetCapabilitiesResponse{
Expand Down
5 changes: 5 additions & 0 deletions service/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -665,13 +665,16 @@ func (s *service) NodeGetCapabilities(
// node.healthMonitor.enabled is set to true in values file
healthMonitorCapabalities := []*csi.NodeServiceCapability{
{
// Required for health monitor, optional if Health monitor is disabled
// Indicates driver can report on volume condition in node plugin
Type: &csi.NodeServiceCapability_Rpc{
Rpc: &csi.NodeServiceCapability_RPC{
Type: csi.NodeServiceCapability_RPC_VOLUME_CONDITION,
},
},
},
{
// Required for NodeGetVolumeStats, optional if health monitor is disabled
Type: &csi.NodeServiceCapability_Rpc{
Rpc: &csi.NodeServiceCapability_RPC{
Type: csi.NodeServiceCapability_RPC_GET_VOLUME_STATS,
Expand All @@ -682,13 +685,15 @@ func (s *service) NodeGetCapabilities(

nodeCapabalities := []*csi.NodeServiceCapability{
{
// Required for NodeExpandVolume
Type: &csi.NodeServiceCapability_Rpc{
Rpc: &csi.NodeServiceCapability_RPC{
Type: csi.NodeServiceCapability_RPC_EXPAND_VOLUME,
},
},
},
{
// Indicates PowerFlex supports SINGLE_NODE_SINGLE_WRITER and/or SINGLE_NODE_MULTI_WRITER access modes
Type: &csi.NodeServiceCapability_Rpc{
Rpc: &csi.NodeServiceCapability_RPC{
Type: csi.NodeServiceCapability_RPC_SINGLE_NODE_MULTI_WRITER,
Expand Down
2 changes: 1 addition & 1 deletion service/step_defs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2335,7 +2335,7 @@ func (f *feature) aValidControllerGetCapabilitiesResponseIsReturned() error {
// Set default value
f.service.opts.IsHealthMonitorEnabled = false
return errors.New("Did not retrieve all the expected capabilities")
} else if !f.service.opts.IsHealthMonitorEnabled && count != 8 {
} else if !f.service.opts.IsHealthMonitorEnabled && count != 9 {
return errors.New("Did not retrieve all the expected capabilities")
}

Expand Down

0 comments on commit 9f67ab8

Please sign in to comment.