1111import org .elasticsearch .action .datastreams .GetDataStreamAction ;
1212import org .elasticsearch .cluster .ClusterName ;
1313import org .elasticsearch .cluster .ClusterState ;
14+ import org .elasticsearch .cluster .metadata .ComponentTemplate ;
1415import org .elasticsearch .cluster .metadata .ComposableIndexTemplate ;
1516import org .elasticsearch .cluster .metadata .DataStream ;
1617import org .elasticsearch .cluster .metadata .DataStreamFailureStoreSettings ;
3839import java .time .temporal .ChronoUnit ;
3940import java .util .ArrayList ;
4041import java .util .List ;
42+ import java .util .Map ;
4143import java .util .Set ;
4244import java .util .stream .Collectors ;
4345
@@ -548,10 +550,41 @@ public void testGetEffectiveSettingsTemplateOnlySettings() {
548550 GetDataStreamAction .Request req = new GetDataStreamAction .Request (TEST_REQUEST_TIMEOUT , new String [] {});
549551 final String templatePolicy = "templatePolicy" ;
550552 final String templateIndexMode = IndexMode .LOOKUP .getName ();
551- final String dataStreamPolicy = "dataStreamPolicy" ;
552- final String dataStreamIndexMode = IndexMode .LOGSDB .getName ();
553553
554554 ClusterState state = getClusterStateWithDataStreamWithSettings (
555+ Settings .builder ()
556+ .put (IndexMetadata .LIFECYCLE_NAME , templatePolicy )
557+ .put (IndexSettings .MODE .getKey (), templateIndexMode )
558+ .build (),
559+ Settings .EMPTY ,
560+ Settings .EMPTY
561+ );
562+
563+ GetDataStreamAction .Response response = TransportGetDataStreamsAction .innerOperation (
564+ state ,
565+ req ,
566+ resolver ,
567+ systemIndices ,
568+ ClusterSettings .createBuiltInClusterSettings (),
569+ dataStreamGlobalRetentionSettings ,
570+ emptyDataStreamFailureStoreSettings ,
571+ new IndexSettingProviders (Set .of ()),
572+ null
573+ );
574+ assertNotNull (response .getDataStreams ());
575+ assertThat (response .getDataStreams ().size (), equalTo (1 ));
576+ assertThat (response .getDataStreams ().get (0 ).getIlmPolicy (), equalTo (templatePolicy ));
577+ assertThat (response .getDataStreams ().get (0 ).getIndexModeName (), equalTo (templateIndexMode ));
578+ }
579+
580+ public void testGetEffectiveSettingsComponentTemplateOnlySettings () {
581+ // Set a lifecycle only in the template, and make sure that is in the response:
582+ GetDataStreamAction .Request req = new GetDataStreamAction .Request (TEST_REQUEST_TIMEOUT , new String [] {});
583+ final String templatePolicy = "templatePolicy" ;
584+ final String templateIndexMode = IndexMode .LOOKUP .getName ();
585+
586+ ClusterState state = getClusterStateWithDataStreamWithSettings (
587+ Settings .EMPTY ,
555588 Settings .builder ()
556589 .put (IndexMetadata .LIFECYCLE_NAME , templatePolicy )
557590 .put (IndexSettings .MODE .getKey (), templateIndexMode )
@@ -584,6 +617,10 @@ public void testGetEffectiveSettings() {
584617 final String dataStreamIndexMode = IndexMode .LOGSDB .getName ();
585618 // Now set a lifecycle in both the template and the data stream, and make sure the response has the data stream one:
586619 ClusterState state = getClusterStateWithDataStreamWithSettings (
620+ Settings .builder ()
621+ .put (IndexMetadata .LIFECYCLE_NAME , templatePolicy )
622+ .put (IndexSettings .MODE .getKey (), templateIndexMode )
623+ .build (),
587624 Settings .builder ()
588625 .put (IndexMetadata .LIFECYCLE_NAME , templatePolicy )
589626 .put (IndexSettings .MODE .getKey (), templateIndexMode )
@@ -610,7 +647,11 @@ public void testGetEffectiveSettings() {
610647 assertThat (response .getDataStreams ().get (0 ).getIndexModeName (), equalTo (dataStreamIndexMode ));
611648 }
612649
613- private static ClusterState getClusterStateWithDataStreamWithSettings (Settings templateSettings , Settings dataStreamSettings ) {
650+ private static ClusterState getClusterStateWithDataStreamWithSettings (
651+ Settings templateSettings ,
652+ Settings componentTemplateSettings ,
653+ Settings dataStreamSettings
654+ ) {
614655 String dataStreamName = "data-stream-1" ;
615656 int numberOfBackingIndices = randomIntBetween (1 , 5 );
616657 long currentTime = System .currentTimeMillis ();
@@ -623,8 +664,16 @@ private static ClusterState getClusterStateWithDataStreamWithSettings(Settings t
623664 .indexPatterns (List .of ("*" ))
624665 .template (Template .builder ().settings (templateSettings ))
625666 .dataStreamTemplate (new ComposableIndexTemplate .DataStreamTemplate ())
667+ .componentTemplates (List .of ("component_template_1" ))
626668 .build ()
627669 );
670+ ComponentTemplate componentTemplate = new ComponentTemplate (
671+ Template .builder ().settings (componentTemplateSettings ).build (),
672+ null ,
673+ null ,
674+ null
675+ );
676+ builder .componentTemplates (Map .of ("component_template_1" , componentTemplate ));
628677
629678 List <IndexMetadata > backingIndices = new ArrayList <>();
630679 for (int backingIndexNumber = 1 ; backingIndexNumber <= numberOfBackingIndices ; backingIndexNumber ++) {
0 commit comments