in pkg/nfs/controllerserver.go [309:332]
func (cs *ControllerServer) ControllerUnpublishVolume(ctx context.Context, req *csi.ControllerUnpublishVolumeRequest) (*csi.ControllerUnpublishVolumeResponse, error) {
// Validate arguments
volumeID := req.GetVolumeId()
nodeID := req.GetNodeId()
if len(volumeID) == 0 {
return nil, status.Error(codes.InvalidArgument, "ControllerUnpublishVolume Volume ID must be provided")
}
if len(nodeID) == 0 {
return nil, status.Error(codes.InvalidArgument, "ControllerUnpublishVolume Node ID must be provided")
}
lockingVolumeID := fmt.Sprintf("%s/%s", nodeID, volumeID)
if acquired := cs.Driver.volumeLocks.TryAcquire(lockingVolumeID); !acquired {
return nil, status.Errorf(codes.Aborted, volumeOperationAlreadyExistsFmt, lockingVolumeID)
}
defer cs.Driver.volumeLocks.Release(lockingVolumeID)
if err := cs.LBController.RemoveIPFromNode(ctx, nodeID, volumeID); err != nil {
return nil, status.Errorf(codes.Internal, "failed to remove IP annotation from node %s: %v", nodeID, err)
}
klog.V(4).Infof("ControllerUnpublishVolume succeeded for volume %v from node %v", volumeID, nodeID)
return &csi.ControllerUnpublishVolumeResponse{}, nil
}