|
@@ -20,8 +20,6 @@ import org.elasticsearch.cluster.metadata.DataStreamGlobalRetentionSettings;
|
|
|
import org.elasticsearch.cluster.metadata.DataStreamTestHelper;
|
|
|
import org.elasticsearch.cluster.metadata.IndexMetadata;
|
|
|
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
|
|
|
-import org.elasticsearch.cluster.metadata.Metadata;
|
|
|
-import org.elasticsearch.cluster.metadata.ProjectId;
|
|
|
import org.elasticsearch.cluster.metadata.ProjectMetadata;
|
|
|
import org.elasticsearch.cluster.metadata.Template;
|
|
|
import org.elasticsearch.common.settings.ClusterSettings;
|
|
@@ -47,7 +45,6 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
import static org.elasticsearch.cluster.metadata.DataStream.getDefaultBackingIndexName;
|
|
|
import static org.elasticsearch.cluster.metadata.DataStreamTestHelper.createIndexMetadata;
|
|
|
-import static org.elasticsearch.cluster.metadata.DataStreamTestHelper.getClusterStateWithDataStreams;
|
|
|
import static org.elasticsearch.test.LambdaMatchers.transformedItemsMatch;
|
|
|
import static org.elasticsearch.test.LambdaMatchers.transformedMatch;
|
|
|
import static org.hamcrest.Matchers.allOf;
|
|
@@ -72,18 +69,15 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
|
|
|
public void testGetDataStream() {
|
|
|
final String dataStreamName = "my-data-stream";
|
|
|
- final var projectId = randomProjectIdOrDefault();
|
|
|
- ClusterState cs = getClusterStateWithDataStreams(projectId, List.of(new Tuple<>(dataStreamName, 1)), List.of());
|
|
|
+ final var project = DataStreamTestHelper.getProjectWithDataStreams(List.of(new Tuple<>(dataStreamName, 1)), List.of());
|
|
|
GetDataStreamAction.Request req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamName });
|
|
|
- List<DataStream> dataStreams = TransportGetDataStreamsAction.getDataStreams(cs.metadata().getProject(projectId), resolver, req);
|
|
|
+ List<DataStream> dataStreams = TransportGetDataStreamsAction.getDataStreams(project, resolver, req);
|
|
|
assertThat(dataStreams, transformedItemsMatch(DataStream::getName, contains(dataStreamName)));
|
|
|
}
|
|
|
|
|
|
public void testGetDataStreamsWithWildcards() {
|
|
|
final String[] dataStreamNames = { "my-data-stream", "another-data-stream" };
|
|
|
- final var projectId = randomProjectIdOrDefault();
|
|
|
- ClusterState cs = getClusterStateWithDataStreams(
|
|
|
- projectId,
|
|
|
+ final var project = DataStreamTestHelper.getProjectWithDataStreams(
|
|
|
List.of(new Tuple<>(dataStreamNames[0], 1), new Tuple<>(dataStreamNames[1], 1)),
|
|
|
List.of()
|
|
|
);
|
|
@@ -92,27 +86,25 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
TEST_REQUEST_TIMEOUT,
|
|
|
new String[] { dataStreamNames[1].substring(0, 5) + "*" }
|
|
|
);
|
|
|
- List<DataStream> dataStreams = TransportGetDataStreamsAction.getDataStreams(cs.metadata().getProject(projectId), resolver, req);
|
|
|
+ List<DataStream> dataStreams = TransportGetDataStreamsAction.getDataStreams(project, resolver, req);
|
|
|
assertThat(dataStreams, transformedItemsMatch(DataStream::getName, contains(dataStreamNames[1])));
|
|
|
|
|
|
req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "*" });
|
|
|
- dataStreams = TransportGetDataStreamsAction.getDataStreams(cs.metadata().getProject(projectId), resolver, req);
|
|
|
+ dataStreams = TransportGetDataStreamsAction.getDataStreams(project, resolver, req);
|
|
|
assertThat(dataStreams, transformedItemsMatch(DataStream::getName, contains(dataStreamNames[1], dataStreamNames[0])));
|
|
|
|
|
|
req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, (String[]) null);
|
|
|
- dataStreams = TransportGetDataStreamsAction.getDataStreams(cs.metadata().getProject(projectId), resolver, req);
|
|
|
+ dataStreams = TransportGetDataStreamsAction.getDataStreams(project, resolver, req);
|
|
|
assertThat(dataStreams, transformedItemsMatch(DataStream::getName, contains(dataStreamNames[1], dataStreamNames[0])));
|
|
|
|
|
|
req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "matches-none*" });
|
|
|
- dataStreams = TransportGetDataStreamsAction.getDataStreams(cs.metadata().getProject(projectId), resolver, req);
|
|
|
+ dataStreams = TransportGetDataStreamsAction.getDataStreams(project, resolver, req);
|
|
|
assertThat(dataStreams, empty());
|
|
|
}
|
|
|
|
|
|
public void testGetDataStreamsWithoutWildcards() {
|
|
|
final String[] dataStreamNames = { "my-data-stream", "another-data-stream" };
|
|
|
- final var projectId = randomProjectIdOrDefault();
|
|
|
- ClusterState cs = getClusterStateWithDataStreams(
|
|
|
- projectId,
|
|
|
+ final var project = DataStreamTestHelper.getProjectWithDataStreams(
|
|
|
List.of(new Tuple<>(dataStreamNames[0], 1), new Tuple<>(dataStreamNames[1], 1)),
|
|
|
List.of()
|
|
|
);
|
|
@@ -121,33 +113,31 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
TEST_REQUEST_TIMEOUT,
|
|
|
new String[] { dataStreamNames[0], dataStreamNames[1] }
|
|
|
);
|
|
|
- List<DataStream> dataStreams = TransportGetDataStreamsAction.getDataStreams(cs.metadata().getProject(projectId), resolver, req);
|
|
|
+ List<DataStream> dataStreams = TransportGetDataStreamsAction.getDataStreams(project, resolver, req);
|
|
|
assertThat(dataStreams, transformedItemsMatch(DataStream::getName, contains(dataStreamNames[1], dataStreamNames[0])));
|
|
|
|
|
|
req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamNames[1] });
|
|
|
- dataStreams = TransportGetDataStreamsAction.getDataStreams(cs.metadata().getProject(projectId), resolver, req);
|
|
|
+ dataStreams = TransportGetDataStreamsAction.getDataStreams(project, resolver, req);
|
|
|
assertThat(dataStreams, transformedItemsMatch(DataStream::getName, contains(dataStreamNames[1])));
|
|
|
|
|
|
req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamNames[0] });
|
|
|
- dataStreams = TransportGetDataStreamsAction.getDataStreams(cs.metadata().getProject(projectId), resolver, req);
|
|
|
+ dataStreams = TransportGetDataStreamsAction.getDataStreams(project, resolver, req);
|
|
|
assertThat(dataStreams, transformedItemsMatch(DataStream::getName, contains(dataStreamNames[0])));
|
|
|
|
|
|
GetDataStreamAction.Request req2 = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "foo" });
|
|
|
IndexNotFoundException e = expectThrows(
|
|
|
IndexNotFoundException.class,
|
|
|
- () -> TransportGetDataStreamsAction.getDataStreams(cs.metadata().getProject(projectId), resolver, req2)
|
|
|
+ () -> TransportGetDataStreamsAction.getDataStreams(project, resolver, req2)
|
|
|
);
|
|
|
assertThat(e.getMessage(), containsString("no such index [foo]"));
|
|
|
}
|
|
|
|
|
|
public void testGetNonexistentDataStream() {
|
|
|
final String dataStreamName = "my-data-stream";
|
|
|
- final var projectId = randomProjectIdOrDefault();
|
|
|
- ClusterState cs = ClusterState.builder(ClusterName.DEFAULT).putProjectMetadata(ProjectMetadata.builder(projectId).build()).build();
|
|
|
GetDataStreamAction.Request req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamName });
|
|
|
IndexNotFoundException e = expectThrows(
|
|
|
IndexNotFoundException.class,
|
|
|
- () -> TransportGetDataStreamsAction.getDataStreams(cs.metadata().getProject(projectId), resolver, req)
|
|
|
+ () -> TransportGetDataStreamsAction.getDataStreams(emptyProject(), resolver, req)
|
|
|
);
|
|
|
assertThat(e.getMessage(), containsString("no such index [" + dataStreamName + "]"));
|
|
|
}
|
|
@@ -302,22 +292,20 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
Instant twoHoursAgo = instant.minus(2, ChronoUnit.HOURS);
|
|
|
Instant twoHoursAhead = instant.plus(2, ChronoUnit.HOURS);
|
|
|
|
|
|
- var projectId = randomProjectIdOrDefault();
|
|
|
- ClusterState state = getClusterStateWithDataStreams(
|
|
|
- projectId,
|
|
|
+ ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
|
|
|
List.of(Tuple.tuple(dataStream1, 2)),
|
|
|
List.of(),
|
|
|
instant.toEpochMilli(),
|
|
|
Settings.EMPTY,
|
|
|
0
|
|
|
);
|
|
|
- var builder = ProjectMetadata.builder(state.metadata().getProject(projectId));
|
|
|
+ var builder = ProjectMetadata.builder(project);
|
|
|
DataStreamTestHelper.getClusterStateWithDataStream(builder, dataStream1, List.of(new Tuple<>(twoHoursAgo, twoHoursAhead)));
|
|
|
- state = ClusterState.builder(state).putProjectMetadata(builder.build()).build();
|
|
|
+ project = builder.build();
|
|
|
|
|
|
var req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] {});
|
|
|
var response = TransportGetDataStreamsAction.innerOperation(
|
|
|
- state.projectState(projectId),
|
|
|
+ projectStateFromProject(project),
|
|
|
req,
|
|
|
resolver,
|
|
|
systemIndices,
|
|
@@ -347,12 +335,13 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testPassingGlobalRetention() {
|
|
|
- var projectId = randomProjectIdOrDefault();
|
|
|
- ClusterState state = getClusterStateWithDataStreams(projectId, List.of(Tuple.tuple("data-stream-1", 2)), List.of());
|
|
|
+ final var state = projectStateFromProject(
|
|
|
+ DataStreamTestHelper.getProjectWithDataStreams(List.of(Tuple.tuple("data-stream-1", 2)), List.of())
|
|
|
+ );
|
|
|
|
|
|
var req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] {});
|
|
|
var response = TransportGetDataStreamsAction.innerOperation(
|
|
|
- state.projectState(projectId),
|
|
|
+ state,
|
|
|
req,
|
|
|
resolver,
|
|
|
systemIndices,
|
|
@@ -379,7 +368,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
)
|
|
|
);
|
|
|
response = TransportGetDataStreamsAction.innerOperation(
|
|
|
- state.projectState(projectId),
|
|
|
+ state,
|
|
|
req,
|
|
|
resolver,
|
|
|
systemIndices,
|
|
@@ -395,9 +384,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testDataStreamIsFailureStoreEffectivelyEnabled_disabled() {
|
|
|
- var projectId = randomProjectIdOrDefault();
|
|
|
- ClusterState state = DataStreamTestHelper.getClusterStateWithDataStreams(
|
|
|
- projectId,
|
|
|
+ ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
|
|
|
List.of(Tuple.tuple("data-stream-1", 2)),
|
|
|
List.of(),
|
|
|
System.currentTimeMillis(),
|
|
@@ -409,7 +396,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
|
|
|
var req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] {});
|
|
|
var response = TransportGetDataStreamsAction.innerOperation(
|
|
|
- state.projectState(projectId),
|
|
|
+ projectStateFromProject(project),
|
|
|
req,
|
|
|
resolver,
|
|
|
systemIndices,
|
|
@@ -424,10 +411,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testDataStreamIsFailureStoreEffectivelyEnabled_enabledExplicitly() {
|
|
|
- var projectId = randomProjectIdOrDefault();
|
|
|
- var metadata = new Metadata.Builder();
|
|
|
- ClusterState state = DataStreamTestHelper.getClusterStateWithDataStreams(
|
|
|
- projectId,
|
|
|
+ ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
|
|
|
List.of(Tuple.tuple("data-stream-1", 2)),
|
|
|
List.of(),
|
|
|
System.currentTimeMillis(),
|
|
@@ -439,7 +423,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
|
|
|
var req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] {});
|
|
|
var response = TransportGetDataStreamsAction.innerOperation(
|
|
|
- state.projectState(projectId),
|
|
|
+ projectStateFromProject(project),
|
|
|
req,
|
|
|
resolver,
|
|
|
systemIndices,
|
|
@@ -454,9 +438,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testDataStreamIsFailureStoreEffectivelyEnabled_enabledByClusterSetting() {
|
|
|
- var projectId = randomProjectIdOrDefault();
|
|
|
- ClusterState state = DataStreamTestHelper.getClusterStateWithDataStreams(
|
|
|
- projectId,
|
|
|
+ ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
|
|
|
List.of(Tuple.tuple("data-stream-1", 2)),
|
|
|
List.of(),
|
|
|
System.currentTimeMillis(),
|
|
@@ -468,7 +450,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
|
|
|
var req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] {});
|
|
|
var response = TransportGetDataStreamsAction.innerOperation(
|
|
|
- state.projectState(projectId),
|
|
|
+ projectStateFromProject(project),
|
|
|
req,
|
|
|
resolver,
|
|
|
systemIndices,
|
|
@@ -489,24 +471,19 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testProvidersAffectMode() {
|
|
|
- ClusterState state;
|
|
|
- var projectId = randomProjectIdOrDefault();
|
|
|
- {
|
|
|
- state = DataStreamTestHelper.getClusterStateWithDataStreams(
|
|
|
- projectId,
|
|
|
- List.of(Tuple.tuple("data-stream-1", 2)),
|
|
|
- List.of(),
|
|
|
- System.currentTimeMillis(),
|
|
|
- Settings.EMPTY,
|
|
|
- 0,
|
|
|
- false,
|
|
|
- false
|
|
|
- );
|
|
|
- }
|
|
|
+ ProjectMetadata project = DataStreamTestHelper.getProjectWithDataStreams(
|
|
|
+ List.of(Tuple.tuple("data-stream-1", 2)),
|
|
|
+ List.of(),
|
|
|
+ System.currentTimeMillis(),
|
|
|
+ Settings.EMPTY,
|
|
|
+ 0,
|
|
|
+ false,
|
|
|
+ false
|
|
|
+ );
|
|
|
|
|
|
var req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] {});
|
|
|
var response = TransportGetDataStreamsAction.innerOperation(
|
|
|
- state.projectState(projectId),
|
|
|
+ projectStateFromProject(project),
|
|
|
req,
|
|
|
resolver,
|
|
|
systemIndices,
|
|
@@ -543,13 +520,11 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
|
|
|
public void testGetEffectiveSettingsTemplateOnlySettings() {
|
|
|
// Set a lifecycle only in the template, and make sure that is in the response:
|
|
|
- ProjectId projectId = randomProjectIdOrDefault();
|
|
|
GetDataStreamAction.Request req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] {});
|
|
|
final String templatePolicy = "templatePolicy";
|
|
|
final String templateIndexMode = IndexMode.LOOKUP.getName();
|
|
|
|
|
|
- ClusterState state = getClusterStateWithDataStreamWithSettings(
|
|
|
- projectId,
|
|
|
+ ProjectMetadata project = getProjectWithDataStreamWithSettings(
|
|
|
Settings.builder()
|
|
|
.put(IndexMetadata.LIFECYCLE_NAME, templatePolicy)
|
|
|
.put(IndexSettings.MODE.getKey(), templateIndexMode)
|
|
@@ -559,7 +534,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
);
|
|
|
|
|
|
GetDataStreamAction.Response response = TransportGetDataStreamsAction.innerOperation(
|
|
|
- state.projectState(projectId),
|
|
|
+ projectStateFromProject(project),
|
|
|
req,
|
|
|
resolver,
|
|
|
systemIndices,
|
|
@@ -577,13 +552,11 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
|
|
|
public void testGetEffectiveSettingsComponentTemplateOnlySettings() {
|
|
|
// Set a lifecycle only in the template, and make sure that is in the response:
|
|
|
- ProjectId projectId = randomProjectIdOrDefault();
|
|
|
GetDataStreamAction.Request req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] {});
|
|
|
final String templatePolicy = "templatePolicy";
|
|
|
final String templateIndexMode = IndexMode.LOOKUP.getName();
|
|
|
|
|
|
- ClusterState state = getClusterStateWithDataStreamWithSettings(
|
|
|
- projectId,
|
|
|
+ ProjectMetadata project = getProjectWithDataStreamWithSettings(
|
|
|
Settings.EMPTY,
|
|
|
Settings.builder()
|
|
|
.put(IndexMetadata.LIFECYCLE_NAME, templatePolicy)
|
|
@@ -593,7 +566,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
);
|
|
|
|
|
|
GetDataStreamAction.Response response = TransportGetDataStreamsAction.innerOperation(
|
|
|
- state.projectState(projectId),
|
|
|
+ projectStateFromProject(project),
|
|
|
req,
|
|
|
resolver,
|
|
|
systemIndices,
|
|
@@ -610,15 +583,13 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testGetEffectiveSettings() {
|
|
|
- ProjectId projectId = randomProjectIdOrDefault();
|
|
|
GetDataStreamAction.Request req = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] {});
|
|
|
final String templatePolicy = "templatePolicy";
|
|
|
final String templateIndexMode = IndexMode.LOOKUP.getName();
|
|
|
final String dataStreamPolicy = "dataStreamPolicy";
|
|
|
final String dataStreamIndexMode = IndexMode.LOGSDB.getName();
|
|
|
// Now set a lifecycle in both the template and the data stream, and make sure the response has the data stream one:
|
|
|
- ClusterState state = getClusterStateWithDataStreamWithSettings(
|
|
|
- projectId,
|
|
|
+ ProjectMetadata project = getProjectWithDataStreamWithSettings(
|
|
|
Settings.builder()
|
|
|
.put(IndexMetadata.LIFECYCLE_NAME, templatePolicy)
|
|
|
.put(IndexSettings.MODE.getKey(), templateIndexMode)
|
|
@@ -633,7 +604,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
.build()
|
|
|
);
|
|
|
GetDataStreamAction.Response response = TransportGetDataStreamsAction.innerOperation(
|
|
|
- state.projectState(projectId),
|
|
|
+ projectStateFromProject(project),
|
|
|
req,
|
|
|
resolver,
|
|
|
systemIndices,
|
|
@@ -649,8 +620,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
assertThat(response.getDataStreams().get(0).getIndexModeName(), equalTo(dataStreamIndexMode));
|
|
|
}
|
|
|
|
|
|
- private static ClusterState getClusterStateWithDataStreamWithSettings(
|
|
|
- ProjectId projectId,
|
|
|
+ private static ProjectMetadata getProjectWithDataStreamWithSettings(
|
|
|
Settings templateSettings,
|
|
|
Settings componentTemplateSettings,
|
|
|
Settings dataStreamSettings
|
|
@@ -660,7 +630,7 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
long currentTime = System.currentTimeMillis();
|
|
|
int replicas = 0;
|
|
|
boolean replicated = false;
|
|
|
- ProjectMetadata.Builder builder = ProjectMetadata.builder(projectId);
|
|
|
+ ProjectMetadata.Builder builder = ProjectMetadata.builder(randomProjectIdOrDefault());
|
|
|
builder.put(
|
|
|
"template_1",
|
|
|
ComposableIndexTemplate.builder()
|
|
@@ -700,6 +670,6 @@ public class TransportGetDataStreamsActionTests extends ESTestCase {
|
|
|
for (IndexMetadata index : allIndices) {
|
|
|
builder.put(index, false);
|
|
|
}
|
|
|
- return ClusterState.builder(new ClusterName("_name")).putProjectMetadata(builder.build()).build();
|
|
|
+ return builder.build();
|
|
|
}
|
|
|
}
|