Skip to content

Commit 68f09e3

Browse files
committed
Add xpack.eql.enabled feature flag, disabled by default. Enabled for gradle run task and integration tests.
1 parent b4c75d9 commit 68f09e3

File tree

4 files changed

+75
-2
lines changed

4 files changed

+75
-2
lines changed

distribution/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,7 @@ testClusters {
422422
if (System.getProperty('run.distribution', 'default') == 'default') {
423423
String licenseType = System.getProperty("run.license_type", "basic")
424424
if (licenseType == 'trial') {
425+
setting 'xpack.eql.enabled', 'true'
425426
setting 'xpack.ml.enabled', 'true'
426427
setting 'xpack.graph.enabled', 'true'
427428
setting 'xpack.watcher.enabled', 'true'

x-pack/plugin/eql/qa/rest/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ dependencies {
99

1010
testClusters.integTest {
1111
testDistribution = 'DEFAULT'
12+
setting 'xpack.eql.enabled', 'true'
1213
setting 'xpack.license.self_generated.type', 'basic'
1314
setting 'xpack.monitoring.collection.enabled', 'true'
1415
}

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
*/
66
package org.elasticsearch.xpack.eql.plugin;
77

8+
import org.elasticsearch.Build;
89
import org.elasticsearch.action.ActionRequest;
910
import org.elasticsearch.action.ActionResponse;
1011
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
1112
import org.elasticsearch.cluster.node.DiscoveryNodes;
1213
import org.elasticsearch.common.settings.ClusterSettings;
1314
import org.elasticsearch.common.settings.IndexScopedSettings;
15+
import org.elasticsearch.common.settings.Setting;
1416
import org.elasticsearch.common.settings.Settings;
1517
import org.elasticsearch.common.settings.SettingsFilter;
1618
import org.elasticsearch.plugins.ActionPlugin;
@@ -20,17 +22,44 @@
2022
import org.elasticsearch.xpack.eql.action.EqlSearchAction;
2123

2224
import java.util.Arrays;
25+
import java.util.Collections;
2326
import java.util.List;
2427
import java.util.function.Supplier;
2528

2629
public class EqlPlugin extends Plugin implements ActionPlugin {
30+
31+
public static final Setting<Boolean> EQL_ENABLED_SETTING = Setting.boolSetting(
32+
"xpack.eql.enabled",
33+
false,
34+
Setting.Property.NodeScope
35+
);
36+
37+
2738
@Override
2839
public List<ActionHandler<? extends ActionRequest, ? extends ActionResponse>> getActions() {
2940
return Arrays.asList(
3041
new ActionHandler<>(EqlSearchAction.INSTANCE, TransportEqlSearchAction.class)
3142
);
3243
}
3344

45+
/**
46+
* The settings defined by EQL plugin.
47+
*
48+
* @return the settings
49+
*/
50+
@Override
51+
public List<Setting<?>> getSettings() {
52+
if (isSnapshot()) {
53+
return List.of(EQL_ENABLED_SETTING);
54+
} else {
55+
return List.of();
56+
}
57+
}
58+
59+
boolean isSnapshot() {
60+
return Build.CURRENT.isSnapshot();
61+
}
62+
3463
@Override
3564
public List<RestHandler> getRestHandlers(Settings settings,
3665
RestController restController,
@@ -39,7 +68,11 @@ public List<RestHandler> getRestHandlers(Settings settings,
3968
SettingsFilter settingsFilter,
4069
IndexNameExpressionResolver indexNameExpressionResolver,
4170
Supplier<DiscoveryNodes> nodesInCluster) {
42-
return Arrays.asList(
43-
new RestEqlSearchAction(restController));
71+
72+
boolean enabled = EQL_ENABLED_SETTING.get(settings);
73+
if (!enabled) {
74+
return Collections.emptyList();
75+
}
76+
return Arrays.asList(new RestEqlSearchAction(restController));
4477
}
4578
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
package org.elasticsearch.xpack.eql.plugin;
8+
9+
import org.elasticsearch.test.ESTestCase;
10+
11+
import static org.hamcrest.Matchers.hasItem;
12+
import static org.hamcrest.Matchers.not;
13+
14+
public class EqlPluginTests extends ESTestCase {
15+
public void testEnabledSettingRegisteredInSnapshotBuilds() {
16+
final EqlPlugin plugin = new EqlPlugin() {
17+
18+
@Override
19+
protected boolean isSnapshot() {
20+
return true;
21+
}
22+
23+
};
24+
assertThat(plugin.getSettings(), hasItem(EqlPlugin.EQL_ENABLED_SETTING));
25+
}
26+
27+
public void testEnabledSettingNotRegisteredInNonSnapshotBuilds() {
28+
final EqlPlugin plugin = new EqlPlugin() {
29+
30+
@Override
31+
protected boolean isSnapshot() {
32+
return false;
33+
}
34+
35+
};
36+
assertThat(plugin.getSettings(), not(hasItem(EqlPlugin.EQL_ENABLED_SETTING)));
37+
}
38+
}

0 commit comments

Comments
 (0)