瀏覽代碼

Make data stream aliases project aware (MP-1924)

Allows putting aliases for data streams.
Niels Bauman 9 月之前
父節點
當前提交
5ef1ace001

+ 4 - 6
server/src/main/java/org/elasticsearch/action/admin/indices/alias/TransportIndicesAliasesAction.java

@@ -27,7 +27,6 @@ import org.elasticsearch.cluster.metadata.AliasMetadata;
 import org.elasticsearch.cluster.metadata.DataStreamAlias;
 import org.elasticsearch.cluster.metadata.IndexAbstraction;
 import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
-import org.elasticsearch.cluster.metadata.Metadata;
 import org.elasticsearch.cluster.metadata.MetadataIndexAliasesService;
 import org.elasticsearch.cluster.metadata.ProjectId;
 import org.elasticsearch.cluster.metadata.ProjectMetadata;
@@ -175,7 +174,7 @@ public class TransportIndicesAliasesAction extends TransportMasterNodeAction<Ind
                             );
                         }
                         for (String dataStreamName : concreteDataStreams) {
-                            for (String alias : concreteDataStreamAliases(action, state.metadata(), dataStreamName)) {
+                            for (String alias : concreteDataStreamAliases(action, projectMetadata, dataStreamName)) {
                                 finalActions.add(new AddDataStreamAlias(alias, dataStreamName, action.writeIndex(), action.filter()));
                             }
                         }
@@ -185,7 +184,7 @@ public class TransportIndicesAliasesAction extends TransportMasterNodeAction<Ind
                     }
                     case REMOVE -> {
                         for (String dataStreamName : concreteDataStreams) {
-                            for (String alias : concreteDataStreamAliases(action, state.metadata(), dataStreamName)) {
+                            for (String alias : concreteDataStreamAliases(action, projectMetadata, dataStreamName)) {
                                 finalActions.add(new AliasAction.RemoveDataStreamAlias(alias, dataStreamName, action.mustExist()));
                                 numAliasesRemoved++;
                             }
@@ -301,11 +300,10 @@ public class TransportIndicesAliasesAction extends TransportMasterNodeAction<Ind
         }
     }
 
-    private static String[] concreteDataStreamAliases(AliasActions action, Metadata metadata, String concreteDataStreamName) {
+    private static String[] concreteDataStreamAliases(AliasActions action, ProjectMetadata project, String concreteDataStreamName) {
         if (action.expandAliasesWildcards()) {
             // for DELETE we expand the aliases
-            Stream<String> stream = metadata.getProject()
-                .dataStreamAliases()
+            Stream<String> stream = project.dataStreamAliases()
                 .values()
                 .stream()
                 .filter(alias -> alias.getDataStreams().contains(concreteDataStreamName))

+ 2 - 5
server/src/test/java/org/elasticsearch/cluster/metadata/MetadataIndexAliasesServiceTests.java

@@ -49,7 +49,6 @@ import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.empty;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasItem;
-import static org.hamcrest.Matchers.hasSize;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.notNullValue;
 import static org.hamcrest.Matchers.nullValue;
@@ -704,11 +703,10 @@ public class MetadataIndexAliasesServiceTests extends ESTestCase {
 
     public void testDataStreamAliases() {
         ClusterState state = DataStreamTestHelper.getClusterStateWithDataStreams(
+            projectId,
             List.of(new Tuple<>("logs-foobar", 1), new Tuple<>("metrics-foobar", 1)),
             List.of()
         );
-        assertThat(state.metadata().projects().keySet(), hasSize(1));
-        projectId = state.metadata().projects().keySet().iterator().next();
 
         ClusterState result = service.applyAliasActions(
             state.projectState(projectId),
@@ -742,11 +740,10 @@ public class MetadataIndexAliasesServiceTests extends ESTestCase {
 
     public void testDataStreamAliasesWithWriteFlag() {
         ClusterState state = DataStreamTestHelper.getClusterStateWithDataStreams(
+            projectId,
             List.of(new Tuple<>("logs-http-emea", 1), new Tuple<>("logs-http-nasa", 1)),
             List.of()
         );
-        assertThat(state.metadata().projects().keySet(), hasSize(1));
-        projectId = state.metadata().projects().keySet().iterator().next();
 
         ClusterState result = service.applyAliasActions(
             state.projectState(projectId),

+ 0 - 1
x-pack/qa/multi-project/core-rest-tests-with-multiple-projects/build.gradle

@@ -43,7 +43,6 @@ tasks.named("yamlRestTest").configure {
     '^data_stream/10_basic/Get data stream and check DSL and ILM information',
     '^data_stream/40_supported_apis/Verify shard stores api', // uses _shard_stores API
     '^data_stream/130_migrate_to_data_stream/*',
-    '^data_stream/140_data_stream_aliases/*',
     '^data_stream/170_modify_data_stream/*',
     '^health/10_basic/*',
     '^health/40_diagnosis/*',