func()

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
}