|
@@ -30,6 +30,7 @@ import org.elasticsearch.cluster.metadata.Template;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.common.util.CollectionUtils;
|
|
|
import org.elasticsearch.indices.TestSystemIndexDescriptor;
|
|
|
+import org.elasticsearch.indices.TestSystemIndexDescriptorAllowsTemplates;
|
|
|
import org.elasticsearch.indices.TestSystemIndexPlugin;
|
|
|
import org.elasticsearch.plugins.Plugin;
|
|
|
import org.elasticsearch.test.ESIntegTestCase;
|
|
@@ -157,37 +158,56 @@ public class CreateSystemIndicesIT extends ESIntegTestCase {
|
|
|
doCreateTest(() -> assertAcked(prepareCreate(PRIMARY_INDEX_NAME)), PRIMARY_INDEX_NAME);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Check that a legacy template applying a system alias creates a hidden alias.
|
|
|
- */
|
|
|
- public void testCreateSystemAliasViaV1Template() throws Exception {
|
|
|
+ private void createSystemAliasViaV1Template(String indexName, String primaryIndexName) throws Exception {
|
|
|
assertAcked(
|
|
|
client().admin()
|
|
|
.indices()
|
|
|
.preparePutTemplate("test-template")
|
|
|
- .setPatterns(List.of(INDEX_NAME + "*"))
|
|
|
- .addAlias(new Alias(INDEX_NAME + "-legacy-alias"))
|
|
|
+ .setPatterns(List.of(indexName + "*"))
|
|
|
+ .addAlias(new Alias(indexName + "-legacy-alias"))
|
|
|
.get()
|
|
|
);
|
|
|
|
|
|
- assertAcked(prepareCreate(PRIMARY_INDEX_NAME));
|
|
|
- ensureGreen(PRIMARY_INDEX_NAME);
|
|
|
+ assertAcked(prepareCreate(primaryIndexName));
|
|
|
+ ensureGreen(primaryIndexName);
|
|
|
+ }
|
|
|
|
|
|
- assertHasAliases(Set.of(".test-index", ".test-index-legacy-alias"));
|
|
|
+ /**
|
|
|
+ * Check that a legacy template does not create an alias for a system index
|
|
|
+ */
|
|
|
+ public void testCreateSystemAliasViaV1Template() throws Exception {
|
|
|
+ createSystemAliasViaV1Template(INDEX_NAME, PRIMARY_INDEX_NAME);
|
|
|
|
|
|
- assertAcked(client().admin().indices().prepareDeleteTemplate("*").get());
|
|
|
+ assertHasAliases(Set.of(INDEX_NAME), INDEX_NAME, PRIMARY_INDEX_NAME, 1);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Check that a composable template applying a system alias creates a hidden alias.
|
|
|
+ * Check that a legacy template does create an alias for a system index because of allows templates
|
|
|
*/
|
|
|
- public void testCreateSystemAliasViaComposableTemplate() throws Exception {
|
|
|
+ public void testCreateSystemAliasViaV1TemplateAllowsTemplates() throws Exception {
|
|
|
+ createSystemAliasViaV1Template(
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.INDEX_NAME,
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.PRIMARY_INDEX_NAME
|
|
|
+ );
|
|
|
+
|
|
|
+ assertHasAliases(
|
|
|
+ Set.of(
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.INDEX_NAME,
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.INDEX_NAME + "-legacy-alias"
|
|
|
+ ),
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.INDEX_NAME,
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.PRIMARY_INDEX_NAME,
|
|
|
+ 2
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ private void createIndexWithComposableTemplates(String indexName, String primaryIndexName) throws Exception {
|
|
|
ComposableIndexTemplate cit = new ComposableIndexTemplate(
|
|
|
- Collections.singletonList(INDEX_NAME + "*"),
|
|
|
+ Collections.singletonList(indexName + "*"),
|
|
|
new Template(
|
|
|
null,
|
|
|
null,
|
|
|
- Map.of(INDEX_NAME + "-composable-alias", AliasMetadata.builder(INDEX_NAME + "-composable-alias").build())
|
|
|
+ Map.of(indexName + "-composable-alias", AliasMetadata.builder(indexName + "-composable-alias").build())
|
|
|
),
|
|
|
Collections.emptyList(),
|
|
|
4L,
|
|
@@ -201,10 +221,44 @@ public class CreateSystemIndicesIT extends ESIntegTestCase {
|
|
|
).get()
|
|
|
);
|
|
|
|
|
|
- assertAcked(prepareCreate(PRIMARY_INDEX_NAME));
|
|
|
- ensureGreen(PRIMARY_INDEX_NAME);
|
|
|
+ assertAcked(prepareCreate(primaryIndexName));
|
|
|
+ ensureGreen(primaryIndexName);
|
|
|
+ }
|
|
|
|
|
|
- assertHasAliases(Set.of(".test-index", ".test-index-composable-alias"));
|
|
|
+ /**
|
|
|
+ * Check that a composable template does not create an alias for a system index
|
|
|
+ */
|
|
|
+ public void testCreateSystemAliasViaComposableTemplate() throws Exception {
|
|
|
+ createIndexWithComposableTemplates(INDEX_NAME, PRIMARY_INDEX_NAME);
|
|
|
+
|
|
|
+ assertHasAliases(Set.of(INDEX_NAME), INDEX_NAME, PRIMARY_INDEX_NAME, 1);
|
|
|
+
|
|
|
+ assertAcked(
|
|
|
+ client().execute(
|
|
|
+ DeleteComposableIndexTemplateAction.INSTANCE,
|
|
|
+ new DeleteComposableIndexTemplateAction.Request("test-composable-template")
|
|
|
+ ).get()
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Check that a composable template does create an alias for a system index because of allows templates
|
|
|
+ */
|
|
|
+ public void testCreateSystemAliasViaComposableTemplateWithAllowsTemplates() throws Exception {
|
|
|
+ createIndexWithComposableTemplates(
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.INDEX_NAME,
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.PRIMARY_INDEX_NAME
|
|
|
+ );
|
|
|
+
|
|
|
+ assertHasAliases(
|
|
|
+ Set.of(
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.INDEX_NAME,
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.INDEX_NAME + "-composable-alias"
|
|
|
+ ),
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.INDEX_NAME,
|
|
|
+ TestSystemIndexDescriptorAllowsTemplates.PRIMARY_INDEX_NAME,
|
|
|
+ 2
|
|
|
+ );
|
|
|
|
|
|
assertAcked(
|
|
|
client().execute(
|
|
@@ -278,21 +332,22 @@ public class CreateSystemIndicesIT extends ESIntegTestCase {
|
|
|
assertThat(getAliasesResponse.getAliases().get(concreteIndex).get(0).writeIndex(), equalTo(true));
|
|
|
}
|
|
|
|
|
|
- private void assertHasAliases(Set<String> aliasNames) throws InterruptedException, java.util.concurrent.ExecutionException {
|
|
|
+ private void assertHasAliases(Set<String> aliasNames, String name, String primaryName, int aliasCount) throws InterruptedException,
|
|
|
+ java.util.concurrent.ExecutionException {
|
|
|
final GetAliasesResponse getAliasesResponse = client().admin()
|
|
|
.indices()
|
|
|
.getAliases(new GetAliasesRequest().indicesOptions(IndicesOptions.strictExpandHidden()))
|
|
|
.get();
|
|
|
|
|
|
assertThat(getAliasesResponse.getAliases().size(), equalTo(1));
|
|
|
- assertThat(getAliasesResponse.getAliases().get(PRIMARY_INDEX_NAME).size(), equalTo(2));
|
|
|
+ assertThat(getAliasesResponse.getAliases().get(primaryName).size(), equalTo(aliasCount));
|
|
|
assertThat(
|
|
|
- getAliasesResponse.getAliases().get(PRIMARY_INDEX_NAME).stream().map(AliasMetadata::alias).collect(Collectors.toSet()),
|
|
|
+ getAliasesResponse.getAliases().get(primaryName).stream().map(AliasMetadata::alias).collect(Collectors.toSet()),
|
|
|
equalTo(aliasNames)
|
|
|
);
|
|
|
- for (AliasMetadata aliasMetadata : getAliasesResponse.getAliases().get(PRIMARY_INDEX_NAME)) {
|
|
|
+ for (AliasMetadata aliasMetadata : getAliasesResponse.getAliases().get(primaryName)) {
|
|
|
assertThat(aliasMetadata.isHidden(), equalTo(true));
|
|
|
- if (aliasMetadata.alias().equals(INDEX_NAME)) {
|
|
|
+ if (aliasMetadata.alias().equals(name)) {
|
|
|
assertThat(aliasMetadata.writeIndex(), is(true));
|
|
|
} else {
|
|
|
assertThat(aliasMetadata.writeIndex(), is(nullValue()));
|