diff --git a/docs/changelog/137220.yaml b/docs/changelog/137220.yaml new file mode 100644 index 0000000000000..895a634d91501 --- /dev/null +++ b/docs/changelog/137220.yaml @@ -0,0 +1,5 @@ +pr: 137220 +summary: Skip dataframes when disabled +area: Machine Learning +type: bug +issues: [] diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java index 532f9cf5c71d8..3c6e6d685f377 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearning.java @@ -1527,7 +1527,7 @@ public List getRestHandlers( restHandlers.add(new RestDeleteTrainedModelAliasAction()); restHandlers.add(new RestPutTrainedModelDefinitionPartAction()); restHandlers.add(new RestInferTrainedModelAction()); - restHandlers.add(new RestCatTrainedModelsAction()); + restHandlers.add(new RestCatTrainedModelsAction(machineLearningExtension.get().isDataFrameAnalyticsEnabled())); if (machineLearningExtension.get().isDataFrameAnalyticsEnabled()) { restHandlers.add(new RestGetDataFrameAnalyticsAction()); restHandlers.add(new RestGetDataFrameAnalyticsStatsAction()); diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/rest/cat/RestCatTrainedModelsAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/rest/cat/RestCatTrainedModelsAction.java index d4a2b602759ad..6299aa4bca6af 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/rest/cat/RestCatTrainedModelsAction.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/rest/cat/RestCatTrainedModelsAction.java @@ -49,6 +49,12 @@ @ServerlessScope(Scope.PUBLIC) public class RestCatTrainedModelsAction extends AbstractCatAction { + private final boolean areDataFrameAnalyticsEnabled; + + public RestCatTrainedModelsAction(boolean areDataFrameAnalyticsEnabled) { + this.areDataFrameAnalyticsEnabled = areDataFrameAnalyticsEnabled; + } + @Override public List routes() { return List.of( @@ -122,14 +128,18 @@ private void getDerivedData( listeners.acquire(response -> trainedModelsStats = response.getResources().results()) ); - final var dataFrameAnalyticsRequest = new GetDataFrameAnalyticsAction.Request(requestIdPattern); - dataFrameAnalyticsRequest.setAllowNoResources(true); - dataFrameAnalyticsRequest.setPageParams(new PageParams(0, potentialAnalyticsIds.size())); - client.execute( - GetDataFrameAnalyticsAction.INSTANCE, - dataFrameAnalyticsRequest, - listeners.acquire(response -> dataFrameAnalytics = response.getResources().results()) - ); + if (areDataFrameAnalyticsEnabled) { + final var dataFrameAnalyticsRequest = new GetDataFrameAnalyticsAction.Request(requestIdPattern); + dataFrameAnalyticsRequest.setAllowNoResources(true); + dataFrameAnalyticsRequest.setPageParams(new PageParams(0, potentialAnalyticsIds.size())); + client.execute( + GetDataFrameAnalyticsAction.INSTANCE, + dataFrameAnalyticsRequest, + listeners.acquire(response -> dataFrameAnalytics = response.getResources().results()) + ); + } else { + dataFrameAnalytics = List.of(); + } } } diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/rest/cat/RestCatTrainedModelsActionTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/rest/cat/RestCatTrainedModelsActionTests.java index f7cfba048e722..079cd5d9c4d0a 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/rest/cat/RestCatTrainedModelsActionTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/rest/cat/RestCatTrainedModelsActionTests.java @@ -7,28 +7,25 @@ package org.elasticsearch.xpack.ml.rest.cat; +import org.elasticsearch.common.Strings; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.xpack.core.ml.action.GetTrainedModelsStatsAction; import org.elasticsearch.xpack.core.ml.action.GetTrainedModelsStatsActionResponseTests; +import org.elasticsearch.xpack.core.ml.dataframe.DataFrameAnalyticsConfigTests; import org.elasticsearch.xpack.core.ml.inference.TrainedModelConfigTests; import org.elasticsearch.xpack.core.ml.inference.trainedmodel.TrainedModelSizeStats; -import org.junit.Before; import java.util.List; import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.nullValue; public class RestCatTrainedModelsActionTests extends ESTestCase { - private RestCatTrainedModelsAction action; - - @Before - public void setUpAction() { - action = new RestCatTrainedModelsAction(); - } - public void testBuildTableAccumulatedStats() { + var action = new RestCatTrainedModelsAction(true); + // GetTrainedModelsStatsActionResponseTests var deployment1 = new GetTrainedModelsStatsAction.Response.TrainedModelStats( "id1", @@ -48,10 +45,13 @@ public void testBuildTableAccumulatedStats() { null ); - var configs = List.of(TrainedModelConfigTests.createTestInstance("id1").build()); + var dataframeConfig = DataFrameAnalyticsConfigTests.createRandom("dataframe1"); + var configs = List.of( + TrainedModelConfigTests.createTestInstance(deployment1.getModelId()).setTags(List.of(dataframeConfig.getId())).build() + ); - var table = action.buildTable(new FakeRestRequest(), List.of(deployment1, deployment2), configs, List.of()); - assertThat(table.getRows().get(0).get(0).value, is("id1")); + var table = action.buildTable(new FakeRestRequest(), List.of(deployment1, deployment2), configs, List.of(dataframeConfig)); + assertThat(table.getRows().get(0).get(0).value, is(deployment1.getModelId())); // pipeline count assertThat(table.getRows().get(0).get(9).value, is(4)); // ingest count @@ -82,5 +82,12 @@ public void testBuildTableAccumulatedStats() { .ingestFailedCount() ) ); + assertThat(table.getRows().get(0).get(14).value, is(dataframeConfig.getId())); + assertThat(table.getRows().get(0).get(15).value, is(dataframeConfig.getCreateTime())); + assertThat(table.getRows().get(0).get(16).value, is(Strings.arrayToCommaDelimitedString(dataframeConfig.getSource().getIndex()))); + assertThat( + table.getRows().get(0).get(17).value, + dataframeConfig.getAnalysis() == null ? nullValue() : is(dataframeConfig.getAnalysis().getWriteableName()) + ); } }