**Build scan:**
https://gradle-enterprise.elastic.co/s/hzv6b3hdvd4n6/tests/:qa:smoke-test-multinode:yamlRestTest/org.elasticsearch.smoketest.SmokeTestMultiNodeClientYamlTestSuiteIT/test%20%7Byaml=indices.simulate_template%2F10_basic%2FSimulate%20template%20with%20lifecycle%20and%20include%20defaults%7D

**Reproduction line:**
```
./gradlew ':qa:smoke-test-multinode:yamlRestTest' --tests "org.elasticsearch.smoketest.SmokeTestMultiNodeClientYamlTestSuiteIT" -Dtests.method="test {yaml=indices.simulate_template/10_basic/Simulate template with lifecycle and include defaults}" -Dtests.seed=DAE2B90F0266AC74 -Dbuild.snapshot=false -Dtests.jvm.argline="-Dbuild.snapshot=false" -Dtests.locale=ar-JO -Dtests.timezone=America/Eirunepe -Druntime.java=20
```

**Applicable branches:**
main

**Reproduces locally?:**
Didn't try

**Failure history:**
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.smoketest.SmokeTestMultiNodeClientYamlTestSuiteIT&tests.test=test%20%7Byaml%3Dindices.simulate_template/10_basic/Simulate%20template%20with%20lifecycle%20and%20include%20defaults%7D

**Failure excerpt:**
```
java.lang.AssertionError: Failure at [indices.simulate_template/10_basic:209]: expected [2xx] status code but api [indices.put_index_template] returned [400 Bad Request] [---
error:
  root_cause:
  - type: "x_content_parse_exception"
    reason: "[3:3] [template] unknown field [lifecycle]"
    stack_trace: "org.elasticsearch.ElasticsearchException$1: [3:3] [template] unknown\
      \ field [lifecycle]\n\tat org.elasticsearch.server@8.8.0/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:669)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:665)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.ElasticsearchException.generateFailureXContent(ElasticsearchException.java:597)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestResponse.build(RestResponse.java:175)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestResponse.<init>(RestResponse.java:123)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestResponse.<init>(RestResponse.java:102)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:412)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:539)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:311)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:381)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:477)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:354)\n\
      \tat org.elasticsearch.transport.netty4@8.8.0/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.handlePipelinedRequest(Netty4HttpPipeliningHandler.java:128)\n\
      \tat org.elasticsearch.transport.netty4@8.8.0/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:118)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)\n\
      \tat io.netty.common@4.1.89.Final/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)\n\
      \tat io.netty.common@4.1.89.Final/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\
      \tat java.base/java.lang.Thread.run(Thread.java:1623)\nCaused by: org.elasticsearch.xcontent.XContentParseException:\
      \ [3:3] [template] unknown field [lifecycle]\n\tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.lambda$errorOnUnknown$2(ObjectParser.java:105)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:299)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.lambda$declareField$10(ObjectParser.java:431)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:609)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseSub(ObjectParser.java:629)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:315)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.cluster.metadata.ComposableIndexTemplate.parse(ComposableIndexTemplate.java:104)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.action.admin.indices.RestPutComposableIndexTemplateAction.prepareRequest(RestPutComposableIndexTemplateAction.java:43)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:80)\n\
      \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.doHandleRequest(SecurityRestFilter.java:122)\n\
      \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:95)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:410)\n\
      \t... 44 more\n"
  type: "x_content_parse_exception"
  reason: "[4:5] [index_template] failed to parse field [template]"
  caused_by:
    type: "x_content_parse_exception"
    reason: "[3:3] [template] unknown field [lifecycle]"
    stack_trace: "org.elasticsearch.xcontent.XContentParseException: [3:3] [template]\
      \ unknown field [lifecycle]\n\tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.lambda$errorOnUnknown$2(ObjectParser.java:105)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:299)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.lambda$declareField$10(ObjectParser.java:431)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:609)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseSub(ObjectParser.java:629)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:315)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.cluster.metadata.ComposableIndexTemplate.parse(ComposableIndexTemplate.java:104)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.action.admin.indices.RestPutComposableIndexTemplateAction.prepareRequest(RestPutComposableIndexTemplateAction.java:43)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:80)\n\
      \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.doHandleRequest(SecurityRestFilter.java:122)\n\
      \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:95)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:410)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:539)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:311)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:381)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:477)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:354)\n\
      \tat org.elasticsearch.transport.netty4@8.8.0/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.handlePipelinedRequest(Netty4HttpPipeliningHandler.java:128)\n\
      \tat org.elasticsearch.transport.netty4@8.8.0/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:118)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652)\n\
      \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)\n\
      \tat io.netty.common@4.1.89.Final/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)\n\
      \tat io.netty.common@4.1.89.Final/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\
      \tat java.base/java.lang.Thread.run(Thread.java:1623)\n"
  stack_trace: "org.elasticsearch.xcontent.XContentParseException: [4:5] [index_template]\
    \ failed to parse field [template]\n\tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.throwFailedToParse(ObjectParser.java:616)\n\
    \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:611)\n\
    \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseSub(ObjectParser.java:629)\n\
    \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:315)\n\
    \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
    \tat org.elasticsearch.server@8.8.0/org.elasticsearch.cluster.metadata.ComposableIndexTemplate.parse(ComposableIndexTemplate.java:104)\n\
    \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.action.admin.indices.RestPutComposableIndexTemplateAction.prepareRequest(RestPutComposableIndexTemplateAction.java:43)\n\
    \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:80)\n\
    \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.doHandleRequest(SecurityRestFilter.java:122)\n\
    \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:95)\n\
    \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:410)\n\
    \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:539)\n\
    \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:311)\n\
    \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:381)\n\
    \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:477)\n\
    \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:354)\n\
    \tat org.elasticsearch.transport.netty4@8.8.0/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.handlePipelinedRequest(Netty4HttpPipeliningHandler.java:128)\n\
    \tat org.elasticsearch.transport.netty4@8.8.0/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:118)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
    \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
    \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
    \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
    \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
    \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)\n\
    \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
    \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652)\n\
    \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)\n\
    \tat io.netty.common@4.1.89.Final/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)\n\
    \tat io.netty.common@4.1.89.Final/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\
    \tat java.base/java.lang.Thread.run(Thread.java:1623)\nCaused by: org.elasticsearch.xcontent.XContentParseException:\
    \ [3:3] [template] unknown field [lifecycle]\n\tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.lambda$errorOnUnknown$2(ObjectParser.java:105)\n\
    \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:299)\n\
    \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
    \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.lambda$declareField$10(ObjectParser.java:431)\n\
    \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:609)\n\
    \t... 53 more\n"
status: 400
]

  at __randomizedtesting.SeedInfo.seed([DAE2B90F0266AC74:52B686D5AC9AC18C]:0)
  at org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase.executeSection(ESClientYamlSuiteTestCase.java:572)
  at org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase.test(ESClientYamlSuiteTestCase.java:524)
  at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  at java.lang.reflect.Method.invoke(Method.java:578)
  at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:982)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:996)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48)
  at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
  at org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
  at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
  at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
  at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902)
  at org.elasticsearch.test.cluster.local.LocalElasticsearchCluster$1.evaluate(LocalElasticsearchCluster.java:39)
  at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
  at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
  at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
  at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
  at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
  at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
  at org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
  at java.lang.Thread.run(Thread.java:1623)

  Caused by: java.lang.AssertionError: expected [2xx] status code but api [indices.put_index_template] returned [400 Bad Request] [---
  error:
    root_cause:
    - type: "x_content_parse_exception"
      reason: "[3:3] [template] unknown field [lifecycle]"
      stack_trace: "org.elasticsearch.ElasticsearchException$1: [3:3] [template] unknown\
        \ field [lifecycle]\n\tat org.elasticsearch.server@8.8.0/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:669)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:665)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.ElasticsearchException.generateFailureXContent(ElasticsearchException.java:597)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestResponse.build(RestResponse.java:175)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestResponse.<init>(RestResponse.java:123)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestResponse.<init>(RestResponse.java:102)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:412)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:539)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:311)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:381)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:477)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:354)\n\
        \tat org.elasticsearch.transport.netty4@8.8.0/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.handlePipelinedRequest(Netty4HttpPipeliningHandler.java:128)\n\
        \tat org.elasticsearch.transport.netty4@8.8.0/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:118)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)\n\
        \tat io.netty.common@4.1.89.Final/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)\n\
        \tat io.netty.common@4.1.89.Final/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\
        \tat java.base/java.lang.Thread.run(Thread.java:1623)\nCaused by: org.elasticsearch.xcontent.XContentParseException:\
        \ [3:3] [template] unknown field [lifecycle]\n\tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.lambda$errorOnUnknown$2(ObjectParser.java:105)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:299)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.lambda$declareField$10(ObjectParser.java:431)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:609)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseSub(ObjectParser.java:629)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:315)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.cluster.metadata.ComposableIndexTemplate.parse(ComposableIndexTemplate.java:104)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.action.admin.indices.RestPutComposableIndexTemplateAction.prepareRequest(RestPutComposableIndexTemplateAction.java:43)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:80)\n\
        \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.doHandleRequest(SecurityRestFilter.java:122)\n\
        \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:95)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:410)\n\
        \t... 44 more\n"
    type: "x_content_parse_exception"
    reason: "[4:5] [index_template] failed to parse field [template]"
    caused_by:
      type: "x_content_parse_exception"
      reason: "[3:3] [template] unknown field [lifecycle]"
      stack_trace: "org.elasticsearch.xcontent.XContentParseException: [3:3] [template]\
        \ unknown field [lifecycle]\n\tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.lambda$errorOnUnknown$2(ObjectParser.java:105)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:299)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.lambda$declareField$10(ObjectParser.java:431)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:609)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseSub(ObjectParser.java:629)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:315)\n\
        \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.cluster.metadata.ComposableIndexTemplate.parse(ComposableIndexTemplate.java:104)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.action.admin.indices.RestPutComposableIndexTemplateAction.prepareRequest(RestPutComposableIndexTemplateAction.java:43)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:80)\n\
        \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.doHandleRequest(SecurityRestFilter.java:122)\n\
        \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:95)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:410)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:539)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:311)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:381)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:477)\n\
        \tat org.elasticsearch.server@8.8.0/org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:354)\n\
        \tat org.elasticsearch.transport.netty4@8.8.0/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.handlePipelinedRequest(Netty4HttpPipeliningHandler.java:128)\n\
        \tat org.elasticsearch.transport.netty4@8.8.0/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:118)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652)\n\
        \tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)\n\
        \tat io.netty.common@4.1.89.Final/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)\n\
        \tat io.netty.common@4.1.89.Final/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\
        \tat java.base/java.lang.Thread.run(Thread.java:1623)\n"
    stack_trace: "org.elasticsearch.xcontent.XContentParseException: [4:5] [index_template]\
      \ failed to parse field [template]\n\tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.throwFailedToParse(ObjectParser.java:616)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:611)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parseSub(ObjectParser.java:629)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:315)\n\
      \tat org.elasticsearch.xcontent@8.8.0/org.elasticsearch.xcontent.ConstructingObjectParser.parse(ConstructingObjectParser.java:166)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.cluster.metadata.ComposableIndexTemplate.parse(ComposableIndexTemplate.java:104)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.action.admin.indices.RestPutComposableIndexTemplateAction.prepareRequest(RestPutComposableIndexTemplateAction.java:43)\n\
      \tat org.elasticsearch.server@8.8.0/org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:80)\n\
      \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRestFilter.doHandleRequest(SecurityRestFilter.java:122)\n\
      \tat org.elasticsearch.security@8.8.0/org.elasticsearch.xpack.security.rest.SecurityRe...
```
qa/smoke-test-multinode/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestMultiNodeClientYamlTestSuiteIT.java
public class SmokeTestMultiNodeClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase {
    @ClassRule
    public static ElasticsearchCluster cluster = ElasticsearchCluster.local()
        .nodes(2)
        .module("mapper-extras")
        .module("ingest-common")
        
        .node(0, n -> n.setting("node.roles", "[master,data,ml,remote_cluster_client,transform]"))
        .feature(FeatureFlag.TIME_SERIES_MODE)
        .build();
    public SmokeTestMultiNodeClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) {
        super(testCandidate);
    }
    @ParametersFactory
    public static Iterable<Object[]> parameters() throws Exception {
        return ESClientYamlSuiteTestCase.createParameters();
    }
    @Override
    protected String getTestRestCluster() {
        return cluster.getHttpAddresses();
    }
}