@@ -108,6 +108,10 @@ func (s *service) ControllerPublishVolume(
108108 req * csi.ControllerPublishVolumeRequest ) (
109109 * csi.ControllerPublishVolumeResponse , error ) {
110110
111+ if s .config .DisableAttach {
112+ return nil , status .Error (codes .Unimplemented , "ControllerPublish is not supported" )
113+ }
114+
111115 if len (req .VolumeId ) == 0 {
112116 return nil , status .Error (codes .InvalidArgument , "Volume ID cannot be empty" )
113117 }
@@ -188,6 +192,10 @@ func (s *service) ControllerUnpublishVolume(
188192 req * csi.ControllerUnpublishVolumeRequest ) (
189193 * csi.ControllerUnpublishVolumeResponse , error ) {
190194
195+ if s .config .DisableAttach {
196+ return nil , status .Error (codes .Unimplemented , "ControllerPublish is not supported" )
197+ }
198+
191199 if len (req .VolumeId ) == 0 {
192200 return nil , status .Error (codes .InvalidArgument , "Volume ID cannot be empty" )
193201 }
@@ -338,51 +346,56 @@ func (s *service) ControllerGetCapabilities(
338346 req * csi.ControllerGetCapabilitiesRequest ) (
339347 * csi.ControllerGetCapabilitiesResponse , error ) {
340348
341- return & csi.ControllerGetCapabilitiesResponse {
342- Capabilities : []* csi.ControllerServiceCapability {
343- {
344- Type : & csi.ControllerServiceCapability_Rpc {
345- Rpc : & csi.ControllerServiceCapability_RPC {
346- Type : csi .ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME ,
347- },
349+ caps := []* csi.ControllerServiceCapability {
350+ {
351+ Type : & csi.ControllerServiceCapability_Rpc {
352+ Rpc : & csi.ControllerServiceCapability_RPC {
353+ Type : csi .ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME ,
348354 },
349355 },
350- {
351- Type : & csi. ControllerServiceCapability_Rpc {
352- Rpc : & csi.ControllerServiceCapability_RPC {
353- Type : csi .ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME ,
354- } ,
356+ },
357+ {
358+ Type : & csi.ControllerServiceCapability_Rpc {
359+ Rpc : & csi.ControllerServiceCapability_RPC {
360+ Type : csi . ControllerServiceCapability_RPC_LIST_VOLUMES ,
355361 },
356362 },
357- {
358- Type : & csi. ControllerServiceCapability_Rpc {
359- Rpc : & csi.ControllerServiceCapability_RPC {
360- Type : csi .ControllerServiceCapability_RPC_LIST_VOLUMES ,
361- } ,
363+ },
364+ {
365+ Type : & csi.ControllerServiceCapability_Rpc {
366+ Rpc : & csi.ControllerServiceCapability_RPC {
367+ Type : csi . ControllerServiceCapability_RPC_GET_CAPACITY ,
362368 },
363369 },
364- {
365- Type : & csi. ControllerServiceCapability_Rpc {
366- Rpc : & csi.ControllerServiceCapability_RPC {
367- Type : csi .ControllerServiceCapability_RPC_GET_CAPACITY ,
368- } ,
370+ },
371+ {
372+ Type : & csi.ControllerServiceCapability_Rpc {
373+ Rpc : & csi.ControllerServiceCapability_RPC {
374+ Type : csi . ControllerServiceCapability_RPC_LIST_SNAPSHOTS ,
369375 },
370376 },
371- {
372- Type : & csi. ControllerServiceCapability_Rpc {
373- Rpc : & csi.ControllerServiceCapability_RPC {
374- Type : csi .ControllerServiceCapability_RPC_LIST_SNAPSHOTS ,
375- } ,
377+ },
378+ {
379+ Type : & csi.ControllerServiceCapability_Rpc {
380+ Rpc : & csi.ControllerServiceCapability_RPC {
381+ Type : csi . ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT ,
376382 },
377383 },
378- {
379- Type : & csi.ControllerServiceCapability_Rpc {
380- Rpc : & csi.ControllerServiceCapability_RPC {
381- Type : csi .ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT ,
382- },
384+ },
385+ }
386+
387+ if ! s .config .DisableAttach {
388+ caps = append (caps , & csi.ControllerServiceCapability {
389+ Type : & csi.ControllerServiceCapability_Rpc {
390+ Rpc : & csi.ControllerServiceCapability_RPC {
391+ Type : csi .ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME ,
383392 },
384393 },
385- },
394+ })
395+ }
396+
397+ return & csi.ControllerGetCapabilitiesResponse {
398+ Capabilities : caps ,
386399 }, nil
387400}
388401
0 commit comments