Skip to content

Commit

Permalink
Validate policy type when storing an enrich policy (#48126)
Browse files Browse the repository at this point in the history
  • Loading branch information
martijnvg committed Oct 18, 2019
1 parent 1d06be2 commit 844825a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,12 @@
import org.elasticsearch.common.Strings;
import org.elasticsearch.xpack.core.enrich.EnrichPolicy;

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Function;

Expand Down Expand Up @@ -53,7 +56,11 @@ public static void putPolicy(String name, EnrichPolicy policy, ClusterService cl
if (name.toLowerCase(Locale.ROOT).equals(name) == false) {
throw new IllegalArgumentException("Invalid policy name [" + name + "], must be lowercase");
}
// TODO: add policy validation
Set<String> supportedPolicyTypes = new HashSet<>(Arrays.asList(EnrichPolicy.SUPPORTED_POLICY_TYPES));
if (supportedPolicyTypes.contains(policy.getType()) == false) {
throw new IllegalArgumentException("unsupported policy type [" + policy.getType() +
"], supported types are " + Arrays.toString(EnrichPolicy.SUPPORTED_POLICY_TYPES));
}

final EnrichPolicy finalPolicy;
if (policy.getElasticsearchVersion() == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.xpack.core.enrich.EnrichPolicy;

import java.util.Collections;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;

Expand Down Expand Up @@ -89,6 +90,13 @@ public void testPutValidation() throws Exception {
expectThrows(IllegalArgumentException.class, () -> saveEnrichPolicy("myPolicy", policy, clusterService));
assertThat(error.getMessage(), equalTo("Invalid policy name [myPolicy], must be lowercase"));
}
{
EnrichPolicy invalidPolicy = new EnrichPolicy("unsupported_type", null, Collections.singletonList("index"),
"field", Collections.singletonList("field"));
IllegalArgumentException error =
expectThrows(IllegalArgumentException.class, () -> saveEnrichPolicy("name", invalidPolicy, clusterService));
assertThat(error.getMessage(), equalTo("unsupported policy type [unsupported_type], supported types are [match, geo_match]"));
}
}

public void testDeleteValidation() {
Expand Down

0 comments on commit 844825a

Please sign in to comment.