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 ;
4041import java .time .temporal .ChronoUnit ;
4142import java .util .ArrayList ;
4243import java .util .List ;
44+ import java .util .Map ;
4345import java .util .Set ;
4446import java .util .stream .Collectors ;
4547
@@ -543,11 +545,44 @@ public void testGetEffectiveSettingsTemplateOnlySettings() {
543545 GetDataStreamAction .Request req = new GetDataStreamAction .Request (TEST_REQUEST_TIMEOUT , new String [] {});
544546 final String templatePolicy = "templatePolicy" ;
545547 final String templateIndexMode = IndexMode .LOOKUP .getName ();
546- final String dataStreamPolicy = "dataStreamPolicy" ;
547- final String dataStreamIndexMode = IndexMode .LOGSDB .getName ();
548548
549549 ClusterState state = getClusterStateWithDataStreamWithSettings (
550550 projectId ,
551+ Settings .builder ()
552+ .put (IndexMetadata .LIFECYCLE_NAME , templatePolicy )
553+ .put (IndexSettings .MODE .getKey (), templateIndexMode )
554+ .build (),
555+ Settings .EMPTY ,
556+ Settings .EMPTY
557+ );
558+
559+ GetDataStreamAction .Response response = TransportGetDataStreamsAction .innerOperation (
560+ state .projectState (projectId ),
561+ req ,
562+ resolver ,
563+ systemIndices ,
564+ ClusterSettings .createBuiltInClusterSettings (),
565+ dataStreamGlobalRetentionSettings ,
566+ emptyDataStreamFailureStoreSettings ,
567+ new IndexSettingProviders (Set .of ()),
568+ null
569+ );
570+ assertNotNull (response .getDataStreams ());
571+ assertThat (response .getDataStreams ().size (), equalTo (1 ));
572+ assertThat (response .getDataStreams ().get (0 ).getIlmPolicy (), equalTo (templatePolicy ));
573+ assertThat (response .getDataStreams ().get (0 ).getIndexModeName (), equalTo (templateIndexMode ));
574+ }
575+
576+ public void testGetEffectiveSettingsComponentTemplateOnlySettings () {
577+ // Set a lifecycle only in the template, and make sure that is in the response:
578+ ProjectId projectId = randomProjectIdOrDefault ();
579+ GetDataStreamAction .Request req = new GetDataStreamAction .Request (TEST_REQUEST_TIMEOUT , new String [] {});
580+ final String templatePolicy = "templatePolicy" ;
581+ final String templateIndexMode = IndexMode .LOOKUP .getName ();
582+
583+ ClusterState state = getClusterStateWithDataStreamWithSettings (
584+ projectId ,
585+ Settings .EMPTY ,
551586 Settings .builder ()
552587 .put (IndexMetadata .LIFECYCLE_NAME , templatePolicy )
553588 .put (IndexSettings .MODE .getKey (), templateIndexMode )
@@ -582,6 +617,10 @@ public void testGetEffectiveSettings() {
582617 // Now set a lifecycle in both the template and the data stream, and make sure the response has the data stream one:
583618 ClusterState state = getClusterStateWithDataStreamWithSettings (
584619 projectId ,
620+ Settings .builder ()
621+ .put (IndexMetadata .LIFECYCLE_NAME , templatePolicy )
622+ .put (IndexSettings .MODE .getKey (), templateIndexMode )
623+ .build (),
585624 Settings .builder ()
586625 .put (IndexMetadata .LIFECYCLE_NAME , templatePolicy )
587626 .put (IndexSettings .MODE .getKey (), templateIndexMode )
@@ -611,6 +650,7 @@ public void testGetEffectiveSettings() {
611650 private static ClusterState getClusterStateWithDataStreamWithSettings (
612651 ProjectId projectId ,
613652 Settings templateSettings ,
653+ Settings componentTemplateSettings ,
614654 Settings dataStreamSettings
615655 ) {
616656 String dataStreamName = "data-stream-1" ;
@@ -625,8 +665,16 @@ private static ClusterState getClusterStateWithDataStreamWithSettings(
625665 .indexPatterns (List .of ("*" ))
626666 .template (Template .builder ().settings (templateSettings ))
627667 .dataStreamTemplate (new ComposableIndexTemplate .DataStreamTemplate ())
668+ .componentTemplates (List .of ("component_template_1" ))
628669 .build ()
629670 );
671+ ComponentTemplate componentTemplate = new ComponentTemplate (
672+ Template .builder ().settings (componentTemplateSettings ).build (),
673+ null ,
674+ null ,
675+ null
676+ );
677+ builder .componentTemplates (Map .of ("component_template_1" , componentTemplate ));
630678
631679 List <IndexMetadata > backingIndices = new ArrayList <>();
632680 for (int backingIndexNumber = 1 ; backingIndexNumber <= numberOfBackingIndices ; backingIndexNumber ++) {
0 commit comments