diff --git a/client/pluginmanager/csimanager/volume.go b/client/pluginmanager/csimanager/volume.go index 49cec1cb9..e76edae78 100644 --- a/client/pluginmanager/csimanager/volume.go +++ b/client/pluginmanager/csimanager/volume.go @@ -181,7 +181,7 @@ func (v *volumeManager) publishVolume(ctx context.Context, vol *structs.CSIVolum } err = v.plugin.NodePublishVolume(ctx, &csi.NodePublishVolumeRequest{ - VolumeID: vol.ID, + VolumeID: vol.RemoteID(), PublishContext: publishContext, StagingTargetPath: pluginStagingPath, TargetPath: pluginTargetPath, diff --git a/nomad/csi_endpoint.go b/nomad/csi_endpoint.go index 9d8e44a90..79632e436 100644 --- a/nomad/csi_endpoint.go +++ b/nomad/csi_endpoint.go @@ -247,7 +247,7 @@ func (srv *Server) controllerValidateVolume(req *structs.CSIVolumeRegisterReques method := "ClientCSIController.ValidateVolume" cReq := &cstructs.ClientCSIControllerValidateVolumeRequest{ - VolumeID: vol.ID, + VolumeID: vol.RemoteID(), AttachmentMode: vol.AttachmentMode, AccessMode: vol.AccessMode, } @@ -532,7 +532,7 @@ func (srv *Server) controllerPublishVolume(req *structs.CSIVolumeClaimRequest, r method := "ClientCSIController.AttachVolume" cReq := &cstructs.ClientCSIControllerAttachVolumeRequest{ - VolumeID: req.VolumeID, + VolumeID: vol.RemoteID(), ClientCSINodeID: targetCSIInfo.NodeInfo.ID, AttachmentMode: vol.AttachmentMode, AccessMode: vol.AccessMode, @@ -587,7 +587,7 @@ func (srv *Server) controllerUnpublishVolume(req *structs.CSIVolumeClaimRequest, method := "ClientCSIController.DetachVolume" cReq := &cstructs.ClientCSIControllerDetachVolumeRequest{ - VolumeID: req.VolumeID, + VolumeID: vol.RemoteID(), ClientCSINodeID: targetCSIInfo.NodeInfo.ID, } cReq.PluginID = plug.ID diff --git a/nomad/structs/csi.go b/nomad/structs/csi.go index f1ad4e9fa..e76865ac9 100644 --- a/nomad/structs/csi.go +++ b/nomad/structs/csi.go @@ -212,6 +212,13 @@ func (v *CSIVolume) newStructs() { v.WriteAllocs = map[string]*Allocation{} } +func (v *CSIVolume) RemoteID() string { + if v.ExternalID != "" { + return v.ExternalID + } + return v.ID +} + func (v *CSIVolume) Stub() *CSIVolListStub { stub := CSIVolListStub{ ID: v.ID,