public ActionRequestValidationException validate()

in src/main/java/org/opensearch/knn/plugin/transport/TrainingModelRequest.java [243:295]


    public ActionRequestValidationException validate() {
        ActionRequestValidationException exception = null;

        // Check if model id exists via model metadata
        if (modelDao.getMetadata(modelId) != null) {
            exception = new ActionRequestValidationException();
            exception.addValidationError("Model with id=\"" + modelId + "\" already exists");
            return exception;
        }

        // Confirm that the passed in knnMethodContext is valid and requires training
        ValidationException validationException = this.knnMethodContext.validate();
        if (validationException != null) {
            exception = new ActionRequestValidationException();
            exception.addValidationErrors(validationException.validationErrors());
        }

        if (!this.knnMethodContext.isTrainingRequired()) {
            exception = exception == null ? new ActionRequestValidationException() : exception;
            exception.addValidationError("Method does not require training.");
        }

        // Check if preferred node is real
        if (preferredNodeId != null && !clusterService.state().nodes().getDataNodes().containsKey(preferredNodeId)) {
            exception = exception == null ? new ActionRequestValidationException() : exception;
            exception.addValidationError("Preferred node \"" + preferredNodeId + "\" does not exist");
        }

        // Check if description is too long
        if (description != null && description.length() > KNNConstants.MAX_MODEL_DESCRIPTION_LENGTH) {
            exception = exception == null ? new ActionRequestValidationException() : exception;
            exception.addValidationError("Description exceeds limit of " + KNNConstants.MAX_MODEL_DESCRIPTION_LENGTH +
                    " characters");
        }

        // Validate training index exists
        IndexMetadata indexMetadata = clusterService.state().metadata().index(trainingIndex);
        if (indexMetadata == null) {
            exception = exception == null ? new ActionRequestValidationException() : exception;
            exception.addValidationError("Index \"" + this.trainingIndex + "\" does not exist.");
            return exception;
        }

        // Validate the training field
        ValidationException fieldValidation = IndexUtil.validateKnnField(indexMetadata, this.trainingField,
                this.dimension, modelDao);
        if (fieldValidation != null) {
            exception = exception == null ? new ActionRequestValidationException() : exception;
            exception.addValidationErrors(fieldValidation.validationErrors());
        }

        return exception;
    }