From 68f09e326d738b9981f128f9f9e59c5dea4accb8 Mon Sep 17 00:00:00 2001 From: Aleksandr Maus Date: Thu, 23 Jan 2020 13:54:55 -0500 Subject: [PATCH 1/3] Add xpack.eql.enabled feature flag, disabled by default. Enabled for gradle run task and integration tests. --- distribution/build.gradle | 1 + x-pack/plugin/eql/qa/rest/build.gradle | 1 + .../xpack/eql/plugin/EqlPlugin.java | 37 +++++++++++++++++- .../xpack/eql/plugin/EqlPluginTests.java | 38 +++++++++++++++++++ 4 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/plugin/EqlPluginTests.java diff --git a/distribution/build.gradle b/distribution/build.gradle index 584b80a8c67de..e5b2e6647aa5c 100644 --- a/distribution/build.gradle +++ b/distribution/build.gradle @@ -422,6 +422,7 @@ testClusters { if (System.getProperty('run.distribution', 'default') == 'default') { String licenseType = System.getProperty("run.license_type", "basic") if (licenseType == 'trial') { + setting 'xpack.eql.enabled', 'true' setting 'xpack.ml.enabled', 'true' setting 'xpack.graph.enabled', 'true' setting 'xpack.watcher.enabled', 'true' diff --git a/x-pack/plugin/eql/qa/rest/build.gradle b/x-pack/plugin/eql/qa/rest/build.gradle index a38abad1f5718..f73c719efad98 100644 --- a/x-pack/plugin/eql/qa/rest/build.gradle +++ b/x-pack/plugin/eql/qa/rest/build.gradle @@ -9,6 +9,7 @@ dependencies { testClusters.integTest { testDistribution = 'DEFAULT' + setting 'xpack.eql.enabled', 'true' setting 'xpack.license.self_generated.type', 'basic' setting 'xpack.monitoring.collection.enabled', 'true' } diff --git a/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java b/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java index 9da96d27b4086..ef79d7ac21229 100644 --- a/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java +++ b/x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plugin/EqlPlugin.java @@ -5,12 +5,14 @@ */ package org.elasticsearch.xpack.eql.plugin; +import org.elasticsearch.Build; import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; import org.elasticsearch.cluster.node.DiscoveryNodes; import org.elasticsearch.common.settings.ClusterSettings; import org.elasticsearch.common.settings.IndexScopedSettings; +import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.SettingsFilter; import org.elasticsearch.plugins.ActionPlugin; @@ -20,10 +22,19 @@ import org.elasticsearch.xpack.eql.action.EqlSearchAction; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.function.Supplier; public class EqlPlugin extends Plugin implements ActionPlugin { + + public static final Setting EQL_ENABLED_SETTING = Setting.boolSetting( + "xpack.eql.enabled", + false, + Setting.Property.NodeScope + ); + + @Override public List> getActions() { return Arrays.asList( @@ -31,6 +42,24 @@ public class EqlPlugin extends Plugin implements ActionPlugin { ); } + /** + * The settings defined by EQL plugin. + * + * @return the settings + */ + @Override + public List> getSettings() { + if (isSnapshot()) { + return List.of(EQL_ENABLED_SETTING); + } else { + return List.of(); + } + } + + boolean isSnapshot() { + return Build.CURRENT.isSnapshot(); + } + @Override public List getRestHandlers(Settings settings, RestController restController, @@ -39,7 +68,11 @@ public List getRestHandlers(Settings settings, SettingsFilter settingsFilter, IndexNameExpressionResolver indexNameExpressionResolver, Supplier nodesInCluster) { - return Arrays.asList( - new RestEqlSearchAction(restController)); + + boolean enabled = EQL_ENABLED_SETTING.get(settings); + if (!enabled) { + return Collections.emptyList(); + } + return Arrays.asList(new RestEqlSearchAction(restController)); } } diff --git a/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/plugin/EqlPluginTests.java b/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/plugin/EqlPluginTests.java new file mode 100644 index 0000000000000..02c429a339665 --- /dev/null +++ b/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/plugin/EqlPluginTests.java @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +package org.elasticsearch.xpack.eql.plugin; + +import org.elasticsearch.test.ESTestCase; + +import static org.hamcrest.Matchers.hasItem; +import static org.hamcrest.Matchers.not; + +public class EqlPluginTests extends ESTestCase { + public void testEnabledSettingRegisteredInSnapshotBuilds() { + final EqlPlugin plugin = new EqlPlugin() { + + @Override + protected boolean isSnapshot() { + return true; + } + + }; + assertThat(plugin.getSettings(), hasItem(EqlPlugin.EQL_ENABLED_SETTING)); + } + + public void testEnabledSettingNotRegisteredInNonSnapshotBuilds() { + final EqlPlugin plugin = new EqlPlugin() { + + @Override + protected boolean isSnapshot() { + return false; + } + + }; + assertThat(plugin.getSettings(), not(hasItem(EqlPlugin.EQL_ENABLED_SETTING))); + } +} From f1ad8ee90c467a27e044df9cc0f31079fd47fc34 Mon Sep 17 00:00:00 2001 From: Aleksandr Maus Date: Thu, 23 Jan 2020 14:29:34 -0500 Subject: [PATCH 2/3] Enable Eql feature flag for run task for all license types --- distribution/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distribution/build.gradle b/distribution/build.gradle index e5b2e6647aa5c..17a78142d7759 100644 --- a/distribution/build.gradle +++ b/distribution/build.gradle @@ -422,7 +422,6 @@ testClusters { if (System.getProperty('run.distribution', 'default') == 'default') { String licenseType = System.getProperty("run.license_type", "basic") if (licenseType == 'trial') { - setting 'xpack.eql.enabled', 'true' setting 'xpack.ml.enabled', 'true' setting 'xpack.graph.enabled', 'true' setting 'xpack.watcher.enabled', 'true' @@ -432,6 +431,7 @@ testClusters { } setting 'xpack.security.enabled', 'true' setting 'xpack.monitoring.enabled', 'true' + setting 'xpack.eql.enabled', 'true' setting 'xpack.sql.enabled', 'true' setting 'xpack.rollup.enabled', 'true' keystore 'bootstrap.password', 'password' From b0fdecd21c2ec647bd8ea6e886a8dd52a4eef24c Mon Sep 17 00:00:00 2001 From: Aleksandr Maus Date: Thu, 23 Jan 2020 14:56:07 -0500 Subject: [PATCH 3/3] Disable xpack.eql.enabled flag for all, except eql module integration tests --- distribution/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/distribution/build.gradle b/distribution/build.gradle index 17a78142d7759..584b80a8c67de 100644 --- a/distribution/build.gradle +++ b/distribution/build.gradle @@ -431,7 +431,6 @@ testClusters { } setting 'xpack.security.enabled', 'true' setting 'xpack.monitoring.enabled', 'true' - setting 'xpack.eql.enabled', 'true' setting 'xpack.sql.enabled', 'true' setting 'xpack.rollup.enabled', 'true' keystore 'bootstrap.password', 'password'