Skip to content

Commit 844825a

Browse files
committed
Validate policy type when storing an enrich policy (#48126)
1 parent 1d06be2 commit 844825a

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichStore.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616
import org.elasticsearch.common.Strings;
1717
import org.elasticsearch.xpack.core.enrich.EnrichPolicy;
1818

19+
import java.util.Arrays;
1920
import java.util.HashMap;
21+
import java.util.HashSet;
2022
import java.util.Locale;
2123
import java.util.Map;
24+
import java.util.Set;
2225
import java.util.function.Consumer;
2326
import java.util.function.Function;
2427

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

5865
final EnrichPolicy finalPolicy;
5966
if (policy.getElasticsearchVersion() == null) {

x-pack/plugin/enrich/src/test/java/org/elasticsearch/xpack/enrich/EnrichStoreCrudTests.java

+8
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.elasticsearch.common.xcontent.XContentType;
1212
import org.elasticsearch.xpack.core.enrich.EnrichPolicy;
1313

14+
import java.util.Collections;
1415
import java.util.Map;
1516
import java.util.concurrent.atomic.AtomicReference;
1617

@@ -89,6 +90,13 @@ public void testPutValidation() throws Exception {
8990
expectThrows(IllegalArgumentException.class, () -> saveEnrichPolicy("myPolicy", policy, clusterService));
9091
assertThat(error.getMessage(), equalTo("Invalid policy name [myPolicy], must be lowercase"));
9192
}
93+
{
94+
EnrichPolicy invalidPolicy = new EnrichPolicy("unsupported_type", null, Collections.singletonList("index"),
95+
"field", Collections.singletonList("field"));
96+
IllegalArgumentException error =
97+
expectThrows(IllegalArgumentException.class, () -> saveEnrichPolicy("name", invalidPolicy, clusterService));
98+
assertThat(error.getMessage(), equalTo("unsupported policy type [unsupported_type], supported types are [match, geo_match]"));
99+
}
92100
}
93101

94102
public void testDeleteValidation() {

0 commit comments

Comments
 (0)