override fun createComponents()

in src/main/kotlin/org/opensearch/indexmanagement/IndexManagementPlugin.kt [271:348]


    override fun createComponents(
        client: Client,
        clusterService: ClusterService,
        threadPool: ThreadPool,
        resourceWatcherService: ResourceWatcherService,
        scriptService: ScriptService,
        xContentRegistry: NamedXContentRegistry,
        environment: Environment,
        nodeEnvironment: NodeEnvironment,
        namedWriteableRegistry: NamedWriteableRegistry,
        indexNameExpressionResolver: IndexNameExpressionResolver,
        repositoriesServiceSupplier: Supplier<RepositoriesService>
    ): Collection<Any> {
        val settings = environment.settings()
        this.clusterService = clusterService
        rollupInterceptor = RollupInterceptor(clusterService, settings, indexNameExpressionResolver)
        val jvmService = JvmService(environment.settings())
        val transformRunner = TransformRunner.initialize(
            client,
            clusterService,
            xContentRegistry,
            settings,
            indexNameExpressionResolver,
            jvmService,
            threadPool
        )
        fieldCapsFilter = FieldCapsFilter(clusterService, settings, indexNameExpressionResolver)
        this.indexNameExpressionResolver = indexNameExpressionResolver

        val indexEvaluator = IndexEvaluator(settings, clusterService)
        val skipFlag = SkipExecution(client, clusterService)
        val rollupRunner = RollupRunner
            .registerClient(client)
            .registerClusterService(clusterService)
            .registerNamedXContentRegistry(xContentRegistry)
            .registerScriptService(scriptService)
            .registerSettings(settings)
            .registerThreadPool(threadPool)
            .registerMapperService(RollupMapperService(client, clusterService, indexNameExpressionResolver))
            .registerIndexer(RollupIndexer(settings, clusterService, client))
            .registerSearcher(RollupSearchService(settings, clusterService, client))
            .registerMetadataServices(RollupMetadataService(client, xContentRegistry))
            .registerConsumers()
            .registerClusterConfigurationProvider(skipFlag)
        indexManagementIndices = IndexManagementIndices(settings, client.admin().indices(), clusterService)
        val indexStateManagementHistory =
            IndexStateManagementHistory(
                settings,
                client,
                threadPool,
                clusterService,
                indexManagementIndices
            )

        val managedIndexRunner = ManagedIndexRunner
            .registerClient(client)
            .registerClusterService(clusterService)
            .registerNamedXContentRegistry(xContentRegistry)
            .registerScriptService(scriptService)
            .registerSettings(settings)
            .registerConsumers() // registerConsumers must happen after registerSettings/clusterService
            .registerIMIndex(indexManagementIndices)
            .registerHistoryIndex(indexStateManagementHistory)
            .registerSkipFlag(skipFlag)
            .registerThreadPool(threadPool)

        val metadataService = MetadataService(client, clusterService, skipFlag, indexManagementIndices)
        val templateService = ISMTemplateService(client, clusterService, xContentRegistry, indexManagementIndices)

        val managedIndexCoordinator = ManagedIndexCoordinator(
            environment.settings(),
            client, clusterService, threadPool, indexManagementIndices, metadataService, templateService, indexEvaluator
        )

        return listOf(
            managedIndexRunner, rollupRunner, transformRunner, indexManagementIndices, managedIndexCoordinator, indexStateManagementHistory, indexEvaluator
        )
    }