Skip to content

Commit 00fd098

Browse files
masseykejoegallo
authored andcommitted
Adding transport actions for getting and updating data stream settings (#127417)
1 parent 80c7d4c commit 00fd098

File tree

12 files changed

+1673
-2
lines changed

12 files changed

+1673
-2
lines changed

modules/data-streams/src/internalClusterTest/java/org/elasticsearch/datastreams/DataStreamSettingsIT.java

Lines changed: 351 additions & 0 deletions
Large diffs are not rendered by default.

modules/data-streams/src/main/java/org/elasticsearch/datastreams/DataStreamsPlugin.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
import org.elasticsearch.action.datastreams.DataStreamsStatsAction;
1717
import org.elasticsearch.action.datastreams.DeleteDataStreamAction;
1818
import org.elasticsearch.action.datastreams.GetDataStreamAction;
19+
import org.elasticsearch.action.datastreams.GetDataStreamSettingsAction;
1920
import org.elasticsearch.action.datastreams.MigrateToDataStreamAction;
2021
import org.elasticsearch.action.datastreams.ModifyDataStreamsAction;
2122
import org.elasticsearch.action.datastreams.PromoteDataStreamAction;
2223
import org.elasticsearch.action.datastreams.PutDataStreamOptionsAction;
24+
import org.elasticsearch.action.datastreams.UpdateDataStreamSettingsAction;
2325
import org.elasticsearch.action.datastreams.lifecycle.ExplainDataStreamLifecycleAction;
2426
import org.elasticsearch.action.datastreams.lifecycle.GetDataStreamLifecycleAction;
2527
import org.elasticsearch.action.datastreams.lifecycle.PutDataStreamLifecycleAction;
@@ -37,10 +39,12 @@
3739
import org.elasticsearch.datastreams.action.TransportCreateDataStreamAction;
3840
import org.elasticsearch.datastreams.action.TransportDataStreamsStatsAction;
3941
import org.elasticsearch.datastreams.action.TransportDeleteDataStreamAction;
42+
import org.elasticsearch.datastreams.action.TransportGetDataStreamSettingsAction;
4043
import org.elasticsearch.datastreams.action.TransportGetDataStreamsAction;
4144
import org.elasticsearch.datastreams.action.TransportMigrateToDataStreamAction;
4245
import org.elasticsearch.datastreams.action.TransportModifyDataStreamsAction;
4346
import org.elasticsearch.datastreams.action.TransportPromoteDataStreamAction;
47+
import org.elasticsearch.datastreams.action.TransportUpdateDataStreamSettingsAction;
4448
import org.elasticsearch.datastreams.lifecycle.DataStreamLifecycleErrorStore;
4549
import org.elasticsearch.datastreams.lifecycle.DataStreamLifecycleService;
4650
import org.elasticsearch.datastreams.lifecycle.action.DeleteDataStreamLifecycleAction;
@@ -241,6 +245,8 @@ public Collection<?> createComponents(PluginServices services) {
241245
actions.add(new ActionHandler<>(GetDataStreamOptionsAction.INSTANCE, TransportGetDataStreamOptionsAction.class));
242246
actions.add(new ActionHandler<>(PutDataStreamOptionsAction.INSTANCE, TransportPutDataStreamOptionsAction.class));
243247
actions.add(new ActionHandler<>(DeleteDataStreamOptionsAction.INSTANCE, TransportDeleteDataStreamOptionsAction.class));
248+
actions.add(new ActionHandler<>(GetDataStreamSettingsAction.INSTANCE, TransportGetDataStreamSettingsAction.class));
249+
actions.add(new ActionHandler<>(UpdateDataStreamSettingsAction.INSTANCE, TransportUpdateDataStreamSettingsAction.class));
244250
return actions;
245251
}
246252

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
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+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.datastreams.action;
11+
12+
import org.elasticsearch.action.ActionListener;
13+
import org.elasticsearch.action.datastreams.GetDataStreamSettingsAction;
14+
import org.elasticsearch.action.support.ActionFilters;
15+
import org.elasticsearch.action.support.IndicesOptions;
16+
import org.elasticsearch.action.support.master.TransportMasterNodeReadAction;
17+
import org.elasticsearch.cluster.ClusterState;
18+
import org.elasticsearch.cluster.block.ClusterBlockException;
19+
import org.elasticsearch.cluster.block.ClusterBlockLevel;
20+
import org.elasticsearch.cluster.metadata.DataStream;
21+
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
22+
import org.elasticsearch.cluster.service.ClusterService;
23+
import org.elasticsearch.common.settings.Settings;
24+
import org.elasticsearch.common.settings.SettingsFilter;
25+
import org.elasticsearch.injection.guice.Inject;
26+
import org.elasticsearch.tasks.Task;
27+
import org.elasticsearch.threadpool.ThreadPool;
28+
import org.elasticsearch.transport.TransportService;
29+
30+
import java.util.ArrayList;
31+
import java.util.List;
32+
import java.util.Map;
33+
34+
public class TransportGetDataStreamSettingsAction extends TransportMasterNodeReadAction<
35+
GetDataStreamSettingsAction.Request,
36+
GetDataStreamSettingsAction.Response> {
37+
private final IndexNameExpressionResolver indexNameExpressionResolver;
38+
private final SettingsFilter settingsFilter;
39+
40+
@Inject
41+
public TransportGetDataStreamSettingsAction(
42+
TransportService transportService,
43+
ClusterService clusterService,
44+
ThreadPool threadPool,
45+
SettingsFilter settingsFilter,
46+
ActionFilters actionFilters,
47+
IndexNameExpressionResolver indexNameExpressionResolver
48+
) {
49+
super(
50+
GetDataStreamSettingsAction.NAME,
51+
transportService,
52+
clusterService,
53+
threadPool,
54+
actionFilters,
55+
GetDataStreamSettingsAction.Request::localOnly,
56+
GetDataStreamSettingsAction.Response::localOnly,
57+
threadPool.executor(ThreadPool.Names.MANAGEMENT)
58+
);
59+
this.indexNameExpressionResolver = indexNameExpressionResolver;
60+
this.settingsFilter = settingsFilter;
61+
}
62+
63+
@Override
64+
protected ClusterBlockException checkBlock(GetDataStreamSettingsAction.Request request, ClusterState state) {
65+
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
66+
}
67+
68+
@Override
69+
protected void masterOperation(
70+
Task task,
71+
GetDataStreamSettingsAction.Request request,
72+
ClusterState state,
73+
ActionListener<GetDataStreamSettingsAction.Response> listener
74+
) throws Exception {
75+
List<String> dataStreamNames = indexNameExpressionResolver.dataStreamNames(
76+
clusterService.state(),
77+
IndicesOptions.DEFAULT,
78+
request.indices()
79+
);
80+
Map<String, DataStream> dataStreamMap = state.metadata().dataStreams();
81+
List<GetDataStreamSettingsAction.DataStreamSettingsResponse> responseList = new ArrayList<>(dataStreamNames.size());
82+
for (String dataStreamName : dataStreamNames) {
83+
DataStream dataStream = dataStreamMap.get(dataStreamName);
84+
Settings settings = settingsFilter.filter(dataStream.getSettings());
85+
Settings effectiveSettings = settingsFilter.filter(dataStream.getEffectiveSettings(state.metadata()));
86+
responseList.add(new GetDataStreamSettingsAction.DataStreamSettingsResponse(dataStreamName, settings, effectiveSettings));
87+
}
88+
listener.onResponse(new GetDataStreamSettingsAction.Response(responseList));
89+
}
90+
}

0 commit comments

Comments
 (0)