|
@@ -10,20 +10,26 @@ package org.elasticsearch.action.admin.indices.alias.get;
|
|
|
import org.elasticsearch.Version;
|
|
|
import org.elasticsearch.cluster.ClusterState;
|
|
|
import org.elasticsearch.cluster.metadata.AliasMetadata;
|
|
|
+import org.elasticsearch.cluster.metadata.DataStreamAlias;
|
|
|
+import org.elasticsearch.cluster.metadata.DataStreamTestHelper;
|
|
|
import org.elasticsearch.cluster.metadata.IndexMetadata;
|
|
|
import org.elasticsearch.cluster.metadata.Metadata;
|
|
|
import org.elasticsearch.common.collect.ImmutableOpenMap;
|
|
|
+import org.elasticsearch.common.collect.Tuple;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.common.util.concurrent.ThreadContext;
|
|
|
import org.elasticsearch.indices.EmptySystemIndices;
|
|
|
import org.elasticsearch.indices.SystemIndexDescriptor;
|
|
|
import org.elasticsearch.indices.SystemIndices;
|
|
|
import org.elasticsearch.indices.SystemIndices.SystemIndexAccessLevel;
|
|
|
+import org.elasticsearch.indices.TestIndexNameExpressionResolver;
|
|
|
import org.elasticsearch.test.ESTestCase;
|
|
|
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
|
|
|
+import static org.hamcrest.Matchers.contains;
|
|
|
+import static org.hamcrest.Matchers.containsInAnyOrder;
|
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
|
|
|
|
public class TransportGetAliasesActionTests extends ESTestCase {
|
|
@@ -184,6 +190,37 @@ public class TransportGetAliasesActionTests extends ESTestCase {
|
|
|
"access to system indices and their aliases will not be allowed");
|
|
|
}
|
|
|
|
|
|
+ public void testPostProcessDataStreamAliases() {
|
|
|
+ var resolver = TestIndexNameExpressionResolver.newInstance();
|
|
|
+ var tuples = List.of(new Tuple<>("logs-foo", 1), new Tuple<>("logs-bar", 1), new Tuple<>("logs-baz", 1));
|
|
|
+ var clusterState = DataStreamTestHelper.getClusterStateWithDataStreams(tuples, List.of());
|
|
|
+ var builder = Metadata.builder(clusterState.metadata());
|
|
|
+ builder.put("logs", "logs-foo");
|
|
|
+ builder.put("logs", "logs-bar");
|
|
|
+ builder.put("secret", "logs-bar");
|
|
|
+ clusterState = ClusterState.builder(clusterState).metadata(builder).build();
|
|
|
+
|
|
|
+ // return all all data streams with aliases
|
|
|
+ var getAliasesRequest = new GetAliasesRequest();
|
|
|
+ var result = TransportGetAliasesAction.postProcess(resolver, getAliasesRequest, clusterState);
|
|
|
+ assertThat(result.keySet(), containsInAnyOrder("logs-foo", "logs-bar"));
|
|
|
+ assertThat(result.get("logs-foo"), contains(new DataStreamAlias("logs", List.of("logs-bar", "logs-foo"))));
|
|
|
+ assertThat(result.get("logs-bar"), containsInAnyOrder(new DataStreamAlias("logs", List.of("logs-bar", "logs-foo")),
|
|
|
+ new DataStreamAlias("secret", List.of("logs-bar"))));
|
|
|
+
|
|
|
+ // filter by alias name
|
|
|
+ getAliasesRequest = new GetAliasesRequest("secret");
|
|
|
+ result = TransportGetAliasesAction.postProcess(resolver, getAliasesRequest, clusterState);
|
|
|
+ assertThat(result.keySet(), containsInAnyOrder("logs-bar"));
|
|
|
+ assertThat(result.get("logs-bar"), contains(new DataStreamAlias("secret", List.of("logs-bar"))));
|
|
|
+
|
|
|
+ // filter by data stream:
|
|
|
+ getAliasesRequest = new GetAliasesRequest().indices("logs-foo");
|
|
|
+ result = TransportGetAliasesAction.postProcess(resolver, getAliasesRequest, clusterState);
|
|
|
+ assertThat(result.keySet(), containsInAnyOrder("logs-foo"));
|
|
|
+ assertThat(result.get("logs-foo"), contains(new DataStreamAlias("logs", List.of("logs-bar", "logs-foo"))));
|
|
|
+ }
|
|
|
+
|
|
|
public ClusterState systemIndexTestClusterState() {
|
|
|
return ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
.metadata(Metadata.builder()
|