Search in sources :

Example 1 with ValidationException

use of org.elasticsearch.common.ValidationException in project elasticsearch by elastic.

the class MetaDataIndexTemplateService method validate.

private void validate(PutRequest request) {
    List<String> validationErrors = new ArrayList<>();
    if (request.name.contains(" ")) {
        validationErrors.add("name must not contain a space");
    }
    if (request.name.contains(",")) {
        validationErrors.add("name must not contain a ','");
    }
    if (request.name.contains("#")) {
        validationErrors.add("name must not contain a '#'");
    }
    if (request.name.startsWith("_")) {
        validationErrors.add("name must not start with '_'");
    }
    if (!request.name.toLowerCase(Locale.ROOT).equals(request.name)) {
        validationErrors.add("name must be lower cased");
    }
    for (String indexPattern : request.indexPatterns) {
        if (indexPattern.contains(" ")) {
            validationErrors.add("template must not contain a space");
        }
        if (indexPattern.contains(",")) {
            validationErrors.add("template must not contain a ','");
        }
        if (indexPattern.contains("#")) {
            validationErrors.add("template must not contain a '#'");
        }
        if (indexPattern.startsWith("_")) {
            validationErrors.add("template must not start with '_'");
        }
        if (!Strings.validFileNameExcludingAstrix(indexPattern)) {
            validationErrors.add("template must not contain the following characters " + Strings.INVALID_FILENAME_CHARS);
        }
    }
    try {
        indexScopedSettings.validate(request.settings);
    } catch (IllegalArgumentException iae) {
        validationErrors.add(iae.getMessage());
        for (Throwable t : iae.getSuppressed()) {
            validationErrors.add(t.getMessage());
        }
    }
    List<String> indexSettingsValidation = metaDataCreateIndexService.getIndexSettingsValidationErrors(request.settings);
    validationErrors.addAll(indexSettingsValidation);
    if (!validationErrors.isEmpty()) {
        ValidationException validationException = new ValidationException();
        validationException.addValidationErrors(validationErrors);
        throw new InvalidIndexTemplateException(request.name, validationException.getMessage());
    }
    for (Alias alias : request.aliases) {
        //we validate the alias only partially, as we don't know yet to which index it'll get applied to
        aliasValidator.validateAliasStandalone(alias);
        if (request.indexPatterns.contains(alias.name())) {
            throw new IllegalArgumentException("Alias [" + alias.name() + "] cannot be the same as any pattern in [" + String.join(", ", request.indexPatterns) + "]");
        }
    }
}
Also used : ValidationException(org.elasticsearch.common.ValidationException) Alias(org.elasticsearch.action.admin.indices.alias.Alias) ArrayList(java.util.ArrayList) InvalidIndexTemplateException(org.elasticsearch.indices.InvalidIndexTemplateException)

Example 2 with ValidationException

use of org.elasticsearch.common.ValidationException in project elasticsearch by elastic.

the class MetaDataCreateIndexService method validateIndexSettings.

public void validateIndexSettings(String indexName, Settings settings) throws IndexCreationException {
    List<String> validationErrors = getIndexSettingsValidationErrors(settings);
    if (validationErrors.isEmpty() == false) {
        ValidationException validationException = new ValidationException();
        validationException.addValidationErrors(validationErrors);
        throw new IndexCreationException(indexName, validationException);
    }
}
Also used : ValidationException(org.elasticsearch.common.ValidationException) IndexCreationException(org.elasticsearch.indices.IndexCreationException)

Aggregations

ValidationException (org.elasticsearch.common.ValidationException)2 ArrayList (java.util.ArrayList)1 Alias (org.elasticsearch.action.admin.indices.alias.Alias)1 IndexCreationException (org.elasticsearch.indices.IndexCreationException)1 InvalidIndexTemplateException (org.elasticsearch.indices.InvalidIndexTemplateException)1