From 911872b61e23fec64e54d34f1fc25262fea6248f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sat, 12 Apr 2025 12:35:22 +0200 Subject: [PATCH 01/24] qs --- .../ror/configuration/ReadonlyRestEsConfig.scala | 11 ++++++++--- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- .../scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 10 ++++++++-- 31 files changed, 248 insertions(+), 63 deletions(-) diff --git a/core/src/main/scala/tech/beshu/ror/configuration/ReadonlyRestEsConfig.scala b/core/src/main/scala/tech/beshu/ror/configuration/ReadonlyRestEsConfig.scala index 2cfff86701..d00308f629 100644 --- a/core/src/main/scala/tech/beshu/ror/configuration/ReadonlyRestEsConfig.scala +++ b/core/src/main/scala/tech/beshu/ror/configuration/ReadonlyRestEsConfig.scala @@ -23,18 +23,23 @@ import tech.beshu.ror.utils.ScalaOps.* final case class ReadonlyRestEsConfig(bootConfig: RorBootConfiguration, sslConfig: RorSsl, - fipsConfig: FipsConfiguration) + fipsConfig: FipsConfiguration, + esNodeConfig: EsNodeConfig) + +final case class EsNodeConfig(clusterName: String, + nodeName: String) object ReadonlyRestEsConfig { - def load(esEnv: EsEnv) + def load(esEnv: EsEnv, + esNodeConfig: EsNodeConfig) (implicit environmentConfig: EnvironmentConfig): Task[Either[MalformedSettings, ReadonlyRestEsConfig]] = { value { for { bootConfig <- EitherT(RorBootConfiguration.load(esEnv)) sslConfig <- EitherT(RorSsl.load(esEnv)) fipsConfig <- EitherT(FipsConfiguration.load(esEnv)) - } yield ReadonlyRestEsConfig(bootConfig, sslConfig, fipsConfig) + } yield ReadonlyRestEsConfig(bootConfig, sslConfig, fipsConfig, esNodeConfig) } } } diff --git a/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 0d25b7377f..f83afbc931 100644 --- a/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -49,7 +51,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -100,8 +102,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 3eda83ab83..19986717e2 100644 --- a/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -49,7 +51,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -100,8 +102,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 36f4b1fb95..3feffb665c 100644 --- a/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -50,7 +52,7 @@ import org.elasticsearch.transport.{SharedGroupFactory, Transport, TransportInte import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 36f4b1fb95..3feffb665c 100644 --- a/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -50,7 +52,7 @@ import org.elasticsearch.transport.{SharedGroupFactory, Transport, TransportInte import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 36f4b1fb95..3feffb665c 100644 --- a/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -50,7 +52,7 @@ import org.elasticsearch.transport.{SharedGroupFactory, Transport, TransportInte import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index c50c04d781..ac449cd4e1 100644 --- a/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -38,6 +39,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -50,7 +52,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 9453cd6795..c02de1220c 100644 --- a/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -38,6 +39,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -50,7 +52,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 3eda83ab83..19986717e2 100644 --- a/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -49,7 +51,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -100,8 +102,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 647ccdc284..81e5c7315e 100644 --- a/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -49,7 +51,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -100,8 +102,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 7a1c8c25a8..83caa54a55 100644 --- a/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -49,7 +51,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -100,8 +102,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 7c0be45281..0f8480aedf 100644 --- a/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -49,7 +51,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -100,8 +102,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 3415c53d73..be5f22316d 100644 --- a/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -50,7 +52,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -101,8 +103,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 7477c7ed91..c5cd63c270 100644 --- a/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,6 +40,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -50,7 +52,7 @@ import org.elasticsearch.transport.{SharedGroupFactory, Transport, TransportInte import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ca59d26570..65b4b5d789 100644 --- a/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -37,6 +38,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -49,7 +51,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index f107e334ab..866e089b5e 100644 --- a/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.AllocationService @@ -39,6 +40,7 @@ import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.IndicesService import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -52,7 +54,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -107,8 +109,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 2dac70e003..7189c5c268 100644 --- a/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.AllocationService @@ -39,6 +40,7 @@ import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.IndicesService import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -53,7 +55,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -108,8 +110,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 4554862dd1..2b7d5efd6b 100644 --- a/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,6 +22,7 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.common.inject.Inject @@ -35,6 +36,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -45,7 +47,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -100,8 +102,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ec66b1363b..f607a9d588 100644 --- a/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,6 +22,7 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.common.inject.Inject @@ -36,6 +37,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -46,7 +48,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -101,8 +103,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ec66b1363b..f607a9d588 100644 --- a/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,6 +22,7 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.common.inject.Inject @@ -36,6 +37,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -46,7 +48,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -101,8 +103,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 31434102e0..795211dd49 100644 --- a/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,6 +22,7 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.common.inject.Inject @@ -36,6 +37,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -47,7 +49,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 02e95837c7..2f72746cbb 100644 --- a/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,6 +22,7 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.injection.guice.Inject @@ -36,6 +37,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -47,7 +49,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 43d1e399e7..85a83c3931 100644 --- a/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -37,6 +38,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -49,7 +51,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 43d1e399e7..85a83c3931 100644 --- a/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -37,6 +38,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -49,7 +51,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 0efc03acfb..4e9c5769f3 100644 --- a/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -37,6 +38,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -49,7 +51,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 22f11eaa40..a55debb339 100644 --- a/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -37,6 +38,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -50,7 +52,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -103,8 +105,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 0ebf427d72..485ff1fd9d 100644 --- a/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.decider.AllocationDeciders @@ -38,6 +39,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -51,7 +53,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -106,8 +108,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index e14cad3e9b..e9126a6f9a 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.AllocationService @@ -38,6 +39,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -51,7 +53,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -106,8 +108,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ab6414758b..4cef66e11a 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.AllocationService @@ -38,6 +39,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -51,7 +53,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -106,8 +108,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ab6414758b..4cef66e11a 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,6 +23,7 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.AllocationService @@ -38,6 +39,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -51,7 +53,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -106,8 +108,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configFile(), environment.modulesFile())) + .load(EsEnv(environment.configFile(), environment.modulesFile()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 4a1e8000db..0fca989562 100644 --- a/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,6 +22,7 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.injection.guice.Inject @@ -36,6 +37,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -47,7 +49,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -101,8 +103,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnv(environment.configDir(), environment.modulesDir())) + .load(EsEnv(environment.configDir(), environment.modulesDir()), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener From 23c9fd30df415e1a25e28ab7266296685624b9f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sat, 26 Apr 2025 21:39:07 +0200 Subject: [PATCH 02/24] qs --- .../beshu/ror/audit/AuditRequestContext.scala | 2 ++ .../AuditRequestContextBasedOnAclResult.scala | 4 +++- .../accesscontrol/audit/LoggingContext.scala | 4 +++- .../factory/RawRorConfigBasedCoreFactory.scala | 6 +++--- .../tech/beshu/ror/boot/ReadonlyRest.scala | 17 ++++++++++------- .../integration/AuditOutputFormatTests.scala | 4 ++-- .../BaseYamlLoadedAccessControlTest.scala | 4 ++-- .../unit/acl/factory/AuditSettingsTests.scala | 2 +- .../ror/unit/acl/factory/CoreFactoryTests.scala | 2 +- .../factory/ImpersonationWarningsTests.scala | 2 +- .../ror/unit/acl/factory/LocalUsersTest.scala | 2 +- .../rules/BaseRuleSettingsDecoderTest.scala | 2 +- .../unit/boot/ReadonlyRestStartingTests.scala | 3 ++- .../tech/beshu/ror/unit/boot/RorIndexTest.scala | 3 ++- .../scala/tech/beshu/ror/utils/TestsUtils.scala | 6 ++++-- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 ++- 45 files changed, 98 insertions(+), 55 deletions(-) diff --git a/audit/src/main/scala/tech/beshu/ror/audit/AuditRequestContext.scala b/audit/src/main/scala/tech/beshu/ror/audit/AuditRequestContext.scala index 1b6c8b38c8..6c1688bc92 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/AuditRequestContext.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/AuditRequestContext.scala @@ -45,4 +45,6 @@ trait AuditRequestContext { def attemptedUserName: Option[String] def rawAuthHeader: Option[String] def generalAuditEvents: JSONObject + def nodeName: String + def clusterName: String } \ No newline at end of file diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala index fe88dd7725..2fc567c07a 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala @@ -30,7 +30,7 @@ import tech.beshu.ror.audit.{AuditRequestContext, Headers} import tech.beshu.ror.implicits.* import java.time.Instant -import scala.collection.immutable.{Set => ScalaSet} +import scala.collection.immutable.Set as ScalaSet private[audit] class AuditRequestContextBasedOnAclResult[B <: BlockContext](requestContext: RequestContext.Aux[B], userMetadata: Option[UserMetadata], @@ -40,6 +40,8 @@ private[audit] class AuditRequestContextBasedOnAclResult[B <: BlockContext](requ override val involvesIndices: Boolean) extends AuditRequestContext { + override val nodeName: String = loggingContext.esNodeConfig.nodeName + override val clusterName: String = loggingContext.esNodeConfig.clusterName implicit val showHeader: Show[Header] = obfuscatedHeaderShow(loggingContext.obfuscatedHeaders) private val loggedUser: Option[domain.LoggedUser] = userMetadata diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/LoggingContext.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/LoggingContext.scala index 0649d9268e..87b9a73e73 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/LoggingContext.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/LoggingContext.scala @@ -17,6 +17,8 @@ package tech.beshu.ror.accesscontrol.audit import tech.beshu.ror.accesscontrol.domain.Header +import tech.beshu.ror.configuration.EsNodeConfig import tech.beshu.ror.syntax.* -final case class LoggingContext(obfuscatedHeaders: Set[Header.Name]) +final case class LoggingContext(obfuscatedHeaders: Set[Header.Name], + esNodeConfig: EsNodeConfig) diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala index 7afe537073..9142ffb396 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.accesscontrol.utils.* import tech.beshu.ror.accesscontrol.utils.CirceOps.* import tech.beshu.ror.accesscontrol.utils.CirceOps.DecoderHelpers.FieldListResult.{FieldListValue, NoField} import tech.beshu.ror.configuration.RorConfig.ImpersonationWarningsReader -import tech.beshu.ror.configuration.{EnvironmentConfig, RawRorConfig, RorConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, RawRorConfig, RorConfig} import tech.beshu.ror.implicits.* import tech.beshu.ror.syntax.* import tech.beshu.ror.utils.ScalaOps.* @@ -66,7 +66,7 @@ trait CoreFactory { mocksProvider: MocksProvider): Task[Either[NonEmptyList[CoreCreationError], Core]] } -class RawRorConfigBasedCoreFactory() +class RawRorConfigBasedCoreFactory(esNodeConfig: EsNodeConfig) (implicit environmentConfig: EnvironmentConfig) extends CoreFactory with Logging { @@ -340,7 +340,7 @@ class RawRorConfigBasedCoreFactory() )) obfuscatedHeaders <- AsyncDecoderCreator.from(obfuscatedHeadersAsyncDecoder) blocksNel <- { - implicit val loggingContext: LoggingContext = LoggingContext(obfuscatedHeaders) + implicit val loggingContext: LoggingContext = LoggingContext(obfuscatedHeaders, esNodeConfig) implicit val blockAsyncDecoder: AsyncDecoder[BlockDecodingResult] = AsyncDecoderCreator.from { blockDecoder( DefinitionsPack( diff --git a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala index c5b8c4ded5..3e73d46696 100644 --- a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala +++ b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala @@ -45,7 +45,8 @@ class ReadonlyRest(coreFactory: CoreFactory, val indexConfigManager: IndexConfigManager, val indexTestConfigManager: IndexTestConfigManager, val authServicesMocksProvider: MutableMocksProviderWithCachePerRequest, - val esEnv: EsEnv) + val esEnv: EsEnv, + val esNodeConfig: EsNodeConfig) (implicit environmentConfig: EnvironmentConfig, scheduler: Scheduler) extends Logging { @@ -213,7 +214,7 @@ class ReadonlyRest(coreFactory: CoreFactory, private def createEngine(httpClientsFactory: AsyncHttpClientsFactory, ldapConnectionPoolProvider: UnboundidLdapConnectionPoolProvider, core: Core) = { - implicit val loggingContext: LoggingContext = LoggingContext(core.accessControl.staticContext.obfuscatedHeaders) + implicit val loggingContext: LoggingContext = LoggingContext(core.accessControl.staticContext.obfuscatedHeaders, esNodeConfig) val auditingTool = createAuditingTool(core) val decoratedCore = Core( @@ -296,23 +297,25 @@ object ReadonlyRest { def create(indexContentService: IndexJsonContentService, auditSinkCreator: AuditSinkCreator, - env: EsEnv) + env: EsEnv, + esNodeConfig: EsNodeConfig) (implicit scheduler: Scheduler, environmentConfig: EnvironmentConfig): ReadonlyRest = { - val coreFactory: CoreFactory = new RawRorConfigBasedCoreFactory() - create(coreFactory, indexContentService, auditSinkCreator, env) + val coreFactory: CoreFactory = new RawRorConfigBasedCoreFactory(esNodeConfig) + create(coreFactory, indexContentService, auditSinkCreator, env, esNodeConfig) } def create(coreFactory: CoreFactory, indexContentService: IndexJsonContentService, auditSinkCreator: AuditSinkCreator, - env: EsEnv) + env: EsEnv, + esNodeConfig: EsNodeConfig) (implicit scheduler: Scheduler, environmentConfig: EnvironmentConfig): ReadonlyRest = { val indexConfigManager: IndexConfigManager = new IndexConfigManager(indexContentService) val indexTestConfigManager: IndexTestConfigManager = new IndexTestConfigManager(indexContentService) val mocksProvider = new MutableMocksProviderWithCachePerRequest(AuthServicesMocks.empty) - new ReadonlyRest(coreFactory, auditSinkCreator, indexConfigManager, indexTestConfigManager, mocksProvider, env) + new ReadonlyRest(coreFactory, auditSinkCreator, indexConfigManager, indexTestConfigManager, mocksProvider, env, esNodeConfig) } } \ No newline at end of file diff --git a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala index df7bab819e..8857f23396 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala @@ -29,7 +29,7 @@ import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer import tech.beshu.ror.es.AuditSinkService import tech.beshu.ror.mocks.MockRequestContext import tech.beshu.ror.syntax.* -import tech.beshu.ror.utils.TestsUtils.header +import tech.beshu.ror.utils.TestsUtils.{header, testEsNodeConfig} import java.time.{Clock, Instant, ZoneId} import scala.concurrent.duration.* @@ -133,7 +133,7 @@ class AuditOutputFormatTests extends AnyWordSpec with BaseYamlLoadedAccessContro } private def auditedAcl(auditSinkService: AuditSinkService) = { - implicit val loggingContext: LoggingContext = LoggingContext(Set.empty) + implicit val loggingContext: LoggingContext = LoggingContext(Set.empty, testEsNodeConfig) val settings = AuditingTool.Settings( NonEmptyList.of( AuditSink.Enabled(Config.EsIndexBasedSink( diff --git a/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala b/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala index 43555c628f..6e784313f5 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala @@ -27,7 +27,7 @@ import tech.beshu.ror.configuration.{EnvironmentConfig, RawRorConfig} import tech.beshu.ror.mocks.{MockHttpClientsFactory, MockLdapConnectionPoolProvider} import tech.beshu.ror.providers.* import tech.beshu.ror.utils.TestsPropertiesProvider -import tech.beshu.ror.utils.TestsUtils.{BlockContextAssertion, unsafeNes} +import tech.beshu.ror.utils.TestsUtils.{BlockContextAssertion, testEsNodeConfig, unsafeNes} trait BaseYamlLoadedAccessControlTest extends BlockContextAssertion { @@ -41,7 +41,7 @@ trait BaseYamlLoadedAccessControlTest extends BlockContextAssertion { envVarsProvider = envVarsProvider, propertiesProvider = propertiesProvider ) - private val factory = new RawRorConfigBasedCoreFactory() + private val factory = new RawRorConfigBasedCoreFactory(testEsNodeConfig) protected val ldapConnectionPoolProvider: UnboundidLdapConnectionPoolProvider = MockLdapConnectionPoolProvider protected val httpClientsFactory: HttpClientsFactory = MockHttpClientsFactory protected val mockProvider: MocksProvider = NoOpMocksProvider diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala index 8acb8a3a30..825afdcdd0 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala @@ -44,7 +44,7 @@ class AuditSettingsTests extends AnyWordSpec with Inside { private val factory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory() + new RawRorConfigBasedCoreFactory(testEsNodeConfig) } private val zonedDateTime = ZonedDateTime.of(2019, 1, 1, 0, 1, 59, 0, ZoneId.of("+1")) diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala index da00032c16..6cbe6fd26c 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala @@ -40,7 +40,7 @@ class CoreFactoryTests extends AnyWordSpec with Inside with MockFactory { private val factory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory() + new RawRorConfigBasedCoreFactory(testEsNodeConfig) } "A RorAclFactory" should { diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala index f688f401fb..5ba0d667be 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala @@ -386,6 +386,6 @@ class ImpersonationWarningsTests extends AnyWordSpec with Inside { private val factory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory() + new RawRorConfigBasedCoreFactory(testEsNodeConfig) } } diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala index a116648559..3c79c0448a 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala @@ -318,7 +318,7 @@ class LocalUsersTest extends AnyWordSpec with Inside { private val factory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory() + new RawRorConfigBasedCoreFactory(testEsNodeConfig) } } diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala index cf4503aaa1..54bee9f83a 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala @@ -50,7 +50,7 @@ abstract class BaseRuleSettingsDecoderTest[T <: Rule : ClassTag] extends AnyWord protected def factory: RawRorConfigBasedCoreFactory = { implicit val environmentConfig: EnvironmentConfig = new EnvironmentConfig(envVarsProvider = envVarsProvider) - new RawRorConfigBasedCoreFactory() + new RawRorConfigBasedCoreFactory(testEsNodeConfig) } def assertDecodingSuccess(yaml: String, diff --git a/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala b/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala index 5b5b9f6512..692b2d615b 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala @@ -1362,7 +1362,8 @@ class ReadonlyRestStartingTests factory, indexJsonContentService, _ => mock[AuditSinkService], - EsEnv(getResourcePath(configPath), getResourcePath(configPath)) + EsEnv(getResourcePath(configPath), getResourcePath(configPath)), + testEsNodeConfig, ) } diff --git a/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala b/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala index e7a4ee3f7f..e5d6583c54 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala @@ -235,7 +235,8 @@ class RorIndexTest extends AnyWordSpec factory, indexJsonContentService, _ => mock[AuditSinkService], - EsEnv(getResourcePath(configPath), getResourcePath(configPath)) + EsEnv(getResourcePath(configPath), getResourcePath(configPath)), + testEsNodeConfig, ) } diff --git a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala index 7db2851e02..20cffeab26 100644 --- a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala +++ b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala @@ -50,7 +50,7 @@ import tech.beshu.ror.accesscontrol.domain.GroupIdLike.GroupId import tech.beshu.ror.accesscontrol.domain.Header.Name import tech.beshu.ror.accesscontrol.domain.KibanaApp.KibanaAppRegex import tech.beshu.ror.accesscontrol.domain.User.UserIdPattern -import tech.beshu.ror.configuration.RawRorConfig +import tech.beshu.ror.configuration.{EsNodeConfig, RawRorConfig} import tech.beshu.ror.syntax.* import tech.beshu.ror.utils.js.{JsCompiler, MozillaJsCompiler} import tech.beshu.ror.utils.json.JsonPath @@ -67,7 +67,7 @@ import scala.util.{Failure, Success} object TestsUtils { - implicit val loggingContext: LoggingContext = LoggingContext(Set.empty) + implicit val loggingContext: LoggingContext = LoggingContext(Set.empty, testEsNodeConfig) val rorYamlParser = new RorYamlParser(Megabytes(3)) def basicAuthHeader(value: String): Header = @@ -398,6 +398,8 @@ object TestsUtils { File(getResourcePath(resource)).contentAsString } + def testEsNodeConfig: EsNodeConfig = EsNodeConfig(clusterName = "testEsCluster", nodeName = "testEsNode") + implicit class ValueOrIllegalState[ERROR, SUCCESS](eitherT: EitherT[Task, ERROR, SUCCESS]) extends AnyVal { def valueOrThrowIllegalState()(implicit scheduler: Scheduler): SUCCESS = { diff --git a/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 98dd2f9c9a..3ff9c18aca 100644 --- a/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 98dd2f9c9a..3ff9c18aca 100644 --- a/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 72d5679bf3..79096c01ab 100644 --- a/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 72d5679bf3..79096c01ab 100644 --- a/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 72d5679bf3..79096c01ab 100644 --- a/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 72d5679bf3..79096c01ab 100644 --- a/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 72d5679bf3..79096c01ab 100644 --- a/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 98dd2f9c9a..3ff9c18aca 100644 --- a/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 98dd2f9c9a..3ff9c18aca 100644 --- a/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 98dd2f9c9a..3ff9c18aca 100644 --- a/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 8869e119e3..f6b629196c 100644 --- a/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 72d5679bf3..79096c01ab 100644 --- a/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 72d5679bf3..79096c01ab 100644 --- a/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 5673ef1e9a..e21cf0529f 100644 --- a/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 392c6435f5..a5b40706f6 100644 --- a/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 392c6435f5..a5b40706f6 100644 --- a/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 392c6435f5..a5b40706f6 100644 --- a/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 392c6435f5..a5b40706f6 100644 --- a/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 132831ffc6..9506eef7ce 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configFile(), env.modulesFile()) + EsEnv(env.configFile(), env.modulesFile()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index bf5669bb46..70beba4043 100644 --- a/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -68,7 +68,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkCreator, - EsEnv(env.configDir(), env.modulesDir()) + EsEnv(env.configDir(), env.modulesDir()), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = From f424f8e4a4a52966f8c1032c9e0b8ec6ed7d67a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sun, 4 May 2025 13:18:21 +0200 Subject: [PATCH 03/24] qs --- .../beshu/ror/audit/AuditRequestContext.scala | 2 -- .../AuditRequestContextBasedOnAclResult.scala | 2 -- .../accesscontrol/audit/AuditingTool.scala | 19 ++++++++---- .../audit/EsIndexBasedAuditSink.scala | 29 ++++++++++++++++--- .../accesscontrol/audit/LoggingContext.scala | 4 +-- .../RawRorConfigBasedCoreFactory.scala | 6 ++-- .../decoders/AuditingSettingsDecoder.scala | 8 +++-- .../tech/beshu/ror/boot/ReadonlyRest.scala | 6 ++-- .../integration/AuditOutputFormatTests.scala | 8 +++-- .../BaseYamlLoadedAccessControlTest.scala | 4 +-- .../unit/acl/factory/AuditSettingsTests.scala | 2 +- .../unit/acl/factory/CoreFactoryTests.scala | 2 +- .../factory/ImpersonationWarningsTests.scala | 2 +- .../ror/unit/acl/factory/LocalUsersTest.scala | 2 +- .../rules/BaseRuleSettingsDecoderTest.scala | 2 +- .../unit/acl/logging/AuditingToolTests.scala | 29 ++++++++++++------- .../tech/beshu/ror/utils/TestsUtils.scala | 2 +- 17 files changed, 84 insertions(+), 45 deletions(-) diff --git a/audit/src/main/scala/tech/beshu/ror/audit/AuditRequestContext.scala b/audit/src/main/scala/tech/beshu/ror/audit/AuditRequestContext.scala index 6c1688bc92..1b6c8b38c8 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/AuditRequestContext.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/AuditRequestContext.scala @@ -45,6 +45,4 @@ trait AuditRequestContext { def attemptedUserName: Option[String] def rawAuthHeader: Option[String] def generalAuditEvents: JSONObject - def nodeName: String - def clusterName: String } \ No newline at end of file diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala index 2fc567c07a..5428e0f838 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala @@ -40,8 +40,6 @@ private[audit] class AuditRequestContextBasedOnAclResult[B <: BlockContext](requ override val involvesIndices: Boolean) extends AuditRequestContext { - override val nodeName: String = loggingContext.esNodeConfig.nodeName - override val clusterName: String = loggingContext.esNodeConfig.clusterName implicit val showHeader: Show[Header] = obfuscatedHeaderShow(loggingContext.obfuscatedHeaders) private val loggedUser: Option[domain.LoggedUser] = userMetadata diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala index 4da33144a8..e033fc4bc1 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala @@ -23,6 +23,7 @@ import org.apache.logging.log4j.scala.Logging import org.json.JSONObject import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.{Disabled, Enabled} +import tech.beshu.ror.accesscontrol.audit.EsIndexBasedAuditSink.EsNodeDetailsReporting import tech.beshu.ror.accesscontrol.blocks.Block.{History, Verbosity} import tech.beshu.ror.accesscontrol.blocks.metadata.UserMetadata import tech.beshu.ror.accesscontrol.blocks.{Block, BlockContext} @@ -31,6 +32,7 @@ import tech.beshu.ror.accesscontrol.logging.ResponseContext import tech.beshu.ror.accesscontrol.request.RequestContext import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer import tech.beshu.ror.audit.{AuditLogSerializer, AuditRequestContext, AuditResponseContext} +import tech.beshu.ror.configuration.EsNodeConfig import tech.beshu.ror.es.AuditSinkService import tech.beshu.ror.implicits.* @@ -152,12 +154,14 @@ object AuditingTool extends Logging { object Config { final case class EsIndexBasedSink(logSerializer: AuditLogSerializer, rorAuditIndexTemplate: RorAuditIndexTemplate, - auditCluster: AuditCluster) extends Config + auditCluster: AuditCluster, + enableReportingEsNodeDetails: Boolean) extends Config object EsIndexBasedSink { val default: EsIndexBasedSink = EsIndexBasedSink( logSerializer = new DefaultAuditLogSerializer, rorAuditIndexTemplate = RorAuditIndexTemplate.default, - auditCluster = AuditCluster.LocalAuditCluster + auditCluster = AuditCluster.LocalAuditCluster, + enableReportingEsNodeDetails = false, ) } @@ -174,10 +178,11 @@ object AuditingTool extends Logging { } def create(settings: Settings, + esNodeConfig: EsNodeConfig, auditSinkServiceCreator: AuditCluster => AuditSinkService) (implicit clock: Clock, loggingContext: LoggingContext): Option[AuditingTool] = { - createAuditSinks(settings, auditSinkServiceCreator) match { + createAuditSinks(settings, esNodeConfig, auditSinkServiceCreator) match { case Some(auditSinks) => implicit val auditSinkShow: Show[BaseAuditSink] = Show.show { case _: EsIndexBasedAuditSink => "index" @@ -192,14 +197,18 @@ object AuditingTool extends Logging { } private def createAuditSinks(settings: Settings, + esNodeConfig: EsNodeConfig, auditSinkServiceCreator: AuditCluster => AuditSinkService) (implicit clock: Clock): Option[NonEmptyList[BaseAuditSink]] = { settings .auditSinks .toList .flatMap { - case Enabled(AuditSink.Config.EsIndexBasedSink(logSerializer, rorAuditIndexTemplate, auditCluster)) => - EsIndexBasedAuditSink(logSerializer, rorAuditIndexTemplate, auditSinkServiceCreator(auditCluster)).some + case Enabled(AuditSink.Config.EsIndexBasedSink(logSerializer, rorAuditIndexTemplate, auditCluster, enableReportingEsNodeDetails)) => + val esNodeDetailsReporting = + if (enableReportingEsNodeDetails) EsNodeDetailsReporting.Enabled(esNodeConfig) + else EsNodeDetailsReporting.Disabled + EsIndexBasedAuditSink(logSerializer, rorAuditIndexTemplate, auditSinkServiceCreator(auditCluster), esNodeDetailsReporting).some case Enabled(AuditSink.Config.LogBasedSink(serializer, loggerName)) => new LogBasedAuditSink(serializer, loggerName).some case Disabled => diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/EsIndexBasedAuditSink.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/EsIndexBasedAuditSink.scala index 601363f2b4..415bb512fb 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/EsIndexBasedAuditSink.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/EsIndexBasedAuditSink.scala @@ -18,23 +18,34 @@ package tech.beshu.ror.accesscontrol.audit import monix.eval.Task import org.json.JSONObject +import tech.beshu.ror.accesscontrol.audit.EsIndexBasedAuditSink.EsNodeDetailsReporting import tech.beshu.ror.accesscontrol.domain.RorAuditIndexTemplate import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.configuration.EsNodeConfig import tech.beshu.ror.es.AuditSinkService import java.time.{Clock, Instant} private[audit] class EsIndexBasedAuditSink private(serializer: AuditLogSerializer, rorAuditIndexTemplate: RorAuditIndexTemplate, - auditSinkService: AuditSinkService) + auditSinkService: AuditSinkService, + esNodeDetailsReporting: EsNodeDetailsReporting) (implicit clock: Clock) extends BaseAuditSink(serializer) { override protected def submit(event: AuditResponseContext, serializedEvent: JSONObject): Task[Unit] = Task { + val enrichedEvent = esNodeDetailsReporting match { + case EsNodeDetailsReporting.Disabled => + serializedEvent + case EsNodeDetailsReporting.Enabled(esNodeConfig) => + serializedEvent + .put("es_cluster_name", esNodeConfig.clusterName) + .put("es_node_name", esNodeConfig.nodeName) + } auditSinkService.submit( rorAuditIndexTemplate.indexName(Instant.now(clock)).name.value, event.requestContext.id, - serializedEvent.toString + enrichedEvent.toString ) } @@ -43,9 +54,19 @@ private[audit] class EsIndexBasedAuditSink private(serializer: AuditLogSerialize object EsIndexBasedAuditSink { + sealed trait EsNodeDetailsReporting + + object EsNodeDetailsReporting { + case object Disabled extends EsNodeDetailsReporting + + final case class Enabled(esNodeConfig: EsNodeConfig) extends EsNodeDetailsReporting + } + def apply(serializer: AuditLogSerializer, indexTemplate: RorAuditIndexTemplate, - auditSinkService: AuditSinkService)(implicit clock: Clock): EsIndexBasedAuditSink = { - new EsIndexBasedAuditSink(serializer, indexTemplate, auditSinkService) + auditSinkService: AuditSinkService, + esNodeDetailsReporting: EsNodeDetailsReporting) + (implicit clock: Clock): EsIndexBasedAuditSink = { + new EsIndexBasedAuditSink(serializer, indexTemplate, auditSinkService, esNodeDetailsReporting) } } diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/LoggingContext.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/LoggingContext.scala index 87b9a73e73..0649d9268e 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/LoggingContext.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/LoggingContext.scala @@ -17,8 +17,6 @@ package tech.beshu.ror.accesscontrol.audit import tech.beshu.ror.accesscontrol.domain.Header -import tech.beshu.ror.configuration.EsNodeConfig import tech.beshu.ror.syntax.* -final case class LoggingContext(obfuscatedHeaders: Set[Header.Name], - esNodeConfig: EsNodeConfig) +final case class LoggingContext(obfuscatedHeaders: Set[Header.Name]) diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala index 9142ffb396..7afe537073 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.accesscontrol.utils.* import tech.beshu.ror.accesscontrol.utils.CirceOps.* import tech.beshu.ror.accesscontrol.utils.CirceOps.DecoderHelpers.FieldListResult.{FieldListValue, NoField} import tech.beshu.ror.configuration.RorConfig.ImpersonationWarningsReader -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, RawRorConfig, RorConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, RawRorConfig, RorConfig} import tech.beshu.ror.implicits.* import tech.beshu.ror.syntax.* import tech.beshu.ror.utils.ScalaOps.* @@ -66,7 +66,7 @@ trait CoreFactory { mocksProvider: MocksProvider): Task[Either[NonEmptyList[CoreCreationError], Core]] } -class RawRorConfigBasedCoreFactory(esNodeConfig: EsNodeConfig) +class RawRorConfigBasedCoreFactory() (implicit environmentConfig: EnvironmentConfig) extends CoreFactory with Logging { @@ -340,7 +340,7 @@ class RawRorConfigBasedCoreFactory(esNodeConfig: EsNodeConfig) )) obfuscatedHeaders <- AsyncDecoderCreator.from(obfuscatedHeadersAsyncDecoder) blocksNel <- { - implicit val loggingContext: LoggingContext = LoggingContext(obfuscatedHeaders, esNodeConfig) + implicit val loggingContext: LoggingContext = LoggingContext(obfuscatedHeaders) implicit val blockAsyncDecoder: AsyncDecoder[BlockDecodingResult] = AsyncDecoderCreator.from { blockDecoder( DefinitionsPack( diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala index 97319148f8..bdfea527b8 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala @@ -135,10 +135,12 @@ object AuditingSettingsDecoder extends Logging { auditIndexTemplate <- c.downField("index_template").as[Option[RorAuditIndexTemplate]] customAuditSerializer <- c.downField("serializer").as[Option[AuditLogSerializer]] remoteAuditCluster <- c.downField("cluster").as[Option[AuditCluster.RemoteAuditCluster]] + enableReportingEsNodeDetails <- c.downField("enableReportingEsNodeDetails").as[Option[Boolean]] } yield EsIndexBasedSink( customAuditSerializer.getOrElse(EsIndexBasedSink.default.logSerializer), auditIndexTemplate.getOrElse(EsIndexBasedSink.default.rorAuditIndexTemplate), - remoteAuditCluster.getOrElse(EsIndexBasedSink.default.auditCluster) + remoteAuditCluster.getOrElse(EsIndexBasedSink.default.auditCluster), + enableReportingEsNodeDetails.getOrElse(EsIndexBasedSink.default.enableReportingEsNodeDetails) ) } @@ -230,13 +232,15 @@ object AuditingSettingsDecoder extends Logging { auditIndexTemplate <- decodeOptionalSetting[RorAuditIndexTemplate](c)("index_template", fallbackKey = "audit_index_template") customAuditSerializer <- decodeOptionalSetting[AuditLogSerializer](c)("serializer", fallbackKey = "audit_serializer") remoteAuditCluster <- decodeOptionalSetting[AuditCluster.RemoteAuditCluster](c)("cluster", fallbackKey = "audit_cluster") + enableReportingEsNodeDetails <- c.downField("enableReportingEsNodeDetails").as[Option[Boolean]] } yield AuditingTool.Settings( auditSinks = NonEmptyList.one( AuditSink.Enabled( EsIndexBasedSink( logSerializer = customAuditSerializer.getOrElse(EsIndexBasedSink.default.logSerializer), rorAuditIndexTemplate = auditIndexTemplate.getOrElse(EsIndexBasedSink.default.rorAuditIndexTemplate), - auditCluster = remoteAuditCluster.getOrElse(EsIndexBasedSink.default.auditCluster) + auditCluster = remoteAuditCluster.getOrElse(EsIndexBasedSink.default.auditCluster), + enableReportingEsNodeDetails = enableReportingEsNodeDetails.getOrElse(EsIndexBasedSink.default.enableReportingEsNodeDetails), ) ) ) diff --git a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala index 3e73d46696..73b35b67b5 100644 --- a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala +++ b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala @@ -214,7 +214,7 @@ class ReadonlyRest(coreFactory: CoreFactory, private def createEngine(httpClientsFactory: AsyncHttpClientsFactory, ldapConnectionPoolProvider: UnboundidLdapConnectionPoolProvider, core: Core) = { - implicit val loggingContext: LoggingContext = LoggingContext(core.accessControl.staticContext.obfuscatedHeaders, esNodeConfig) + implicit val loggingContext: LoggingContext = LoggingContext(core.accessControl.staticContext.obfuscatedHeaders) val auditingTool = createAuditingTool(core) val decoratedCore = Core( @@ -236,7 +236,7 @@ class ReadonlyRest(coreFactory: CoreFactory, private def createAuditingTool(core: Core) (implicit loggingContext: LoggingContext): Option[AuditingTool] = { core.rorConfig.auditingSettings - .flatMap(settings => AuditingTool.create(settings, auditSinkCreator)(environmentConfig.clock, loggingContext)) + .flatMap(settings => AuditingTool.create(settings, esNodeConfig, auditSinkCreator)(environmentConfig.clock, loggingContext)) } private def inspectFlsEngine(engine: Engine): Unit = { @@ -301,7 +301,7 @@ object ReadonlyRest { esNodeConfig: EsNodeConfig) (implicit scheduler: Scheduler, environmentConfig: EnvironmentConfig): ReadonlyRest = { - val coreFactory: CoreFactory = new RawRorConfigBasedCoreFactory(esNodeConfig) + val coreFactory: CoreFactory = new RawRorConfigBasedCoreFactory() create(coreFactory, indexContentService, auditSinkCreator, env, esNodeConfig) } diff --git a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala index 8857f23396..67e2b21187 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala @@ -133,19 +133,21 @@ class AuditOutputFormatTests extends AnyWordSpec with BaseYamlLoadedAccessContro } private def auditedAcl(auditSinkService: AuditSinkService) = { - implicit val loggingContext: LoggingContext = LoggingContext(Set.empty, testEsNodeConfig) + implicit val loggingContext: LoggingContext = LoggingContext(Set.empty) val settings = AuditingTool.Settings( NonEmptyList.of( AuditSink.Enabled(Config.EsIndexBasedSink( new DefaultAuditLogSerializer, RorAuditIndexTemplate.default, - AuditCluster.LocalAuditCluster + AuditCluster.LocalAuditCluster, + enableReportingEsNodeDetails = false, )) ) ) val auditingTool = AuditingTool.create( settings = settings, - auditSinkServiceCreator = _ => auditSinkService + auditSinkServiceCreator = _ => auditSinkService, + esNodeConfig = testEsNodeConfig, ).get new AccessControlListLoggingDecorator(acl, Some(auditingTool)) } diff --git a/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala b/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala index 6e784313f5..43555c628f 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala @@ -27,7 +27,7 @@ import tech.beshu.ror.configuration.{EnvironmentConfig, RawRorConfig} import tech.beshu.ror.mocks.{MockHttpClientsFactory, MockLdapConnectionPoolProvider} import tech.beshu.ror.providers.* import tech.beshu.ror.utils.TestsPropertiesProvider -import tech.beshu.ror.utils.TestsUtils.{BlockContextAssertion, testEsNodeConfig, unsafeNes} +import tech.beshu.ror.utils.TestsUtils.{BlockContextAssertion, unsafeNes} trait BaseYamlLoadedAccessControlTest extends BlockContextAssertion { @@ -41,7 +41,7 @@ trait BaseYamlLoadedAccessControlTest extends BlockContextAssertion { envVarsProvider = envVarsProvider, propertiesProvider = propertiesProvider ) - private val factory = new RawRorConfigBasedCoreFactory(testEsNodeConfig) + private val factory = new RawRorConfigBasedCoreFactory() protected val ldapConnectionPoolProvider: UnboundidLdapConnectionPoolProvider = MockLdapConnectionPoolProvider protected val httpClientsFactory: HttpClientsFactory = MockHttpClientsFactory protected val mockProvider: MocksProvider = NoOpMocksProvider diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala index 825afdcdd0..8acb8a3a30 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala @@ -44,7 +44,7 @@ class AuditSettingsTests extends AnyWordSpec with Inside { private val factory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory(testEsNodeConfig) + new RawRorConfigBasedCoreFactory() } private val zonedDateTime = ZonedDateTime.of(2019, 1, 1, 0, 1, 59, 0, ZoneId.of("+1")) diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala index 6cbe6fd26c..da00032c16 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala @@ -40,7 +40,7 @@ class CoreFactoryTests extends AnyWordSpec with Inside with MockFactory { private val factory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory(testEsNodeConfig) + new RawRorConfigBasedCoreFactory() } "A RorAclFactory" should { diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala index 5ba0d667be..f688f401fb 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala @@ -386,6 +386,6 @@ class ImpersonationWarningsTests extends AnyWordSpec with Inside { private val factory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory(testEsNodeConfig) + new RawRorConfigBasedCoreFactory() } } diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala index 3c79c0448a..a116648559 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala @@ -318,7 +318,7 @@ class LocalUsersTest extends AnyWordSpec with Inside { private val factory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory(testEsNodeConfig) + new RawRorConfigBasedCoreFactory() } } diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala index 54bee9f83a..cf4503aaa1 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala @@ -50,7 +50,7 @@ abstract class BaseRuleSettingsDecoderTest[T <: Rule : ClassTag] extends AnyWord protected def factory: RawRorConfigBasedCoreFactory = { implicit val environmentConfig: EnvironmentConfig = new EnvironmentConfig(envVarsProvider = envVarsProvider) - new RawRorConfigBasedCoreFactory(testEsNodeConfig) + new RawRorConfigBasedCoreFactory() } def assertDecodingSuccess(yaml: String, diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala index 5df99ac1d1..a61a7676e2 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala @@ -43,7 +43,7 @@ import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} import tech.beshu.ror.es.AuditSinkService import tech.beshu.ror.mocks.MockRequestContext import tech.beshu.ror.syntax.* -import tech.beshu.ror.utils.TestsUtils.unsafeNes +import tech.beshu.ror.utils.TestsUtils.testEsNodeConfig import java.time.* import java.util.UUID @@ -61,14 +61,16 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "request was allowed and verbosity level was ERROR" in { val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), - auditSinkServiceCreator = _ => mock[AuditSinkService] + auditSinkServiceCreator = _ => mock[AuditSinkService], + esNodeConfig = testEsNodeConfig, ).get auditingTool.audit(createAllowedResponseContext(Policy.Allow, Verbosity.Error)).runSyncUnsafe() } "custom serializer throws exception" in { val auditingTool = AuditingTool.create( settings = auditSettings(throwingAuditLogSerializer), - auditSinkServiceCreator = _ => mock[AuditSinkService] + auditSinkServiceCreator = _ => mock[AuditSinkService], + esNodeConfig = testEsNodeConfig, ).get an[IllegalArgumentException] should be thrownBy { auditingTool.audit(createAllowedResponseContext(Policy.Allow, Verbosity.Info)).runSyncUnsafe() @@ -82,7 +84,8 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), - auditSinkServiceCreator = _ => auditSink + auditSinkServiceCreator = _ => auditSink, + esNodeConfig = testEsNodeConfig, ).get auditingTool.audit(createAllowedResponseContext(Policy.Allow, Verbosity.Info)).runSyncUnsafe() } @@ -92,7 +95,8 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), - auditSinkServiceCreator = _ => auditSink + auditSinkServiceCreator = _ => auditSink, + esNodeConfig = testEsNodeConfig, ).get val requestContext = MockRequestContext.indices.copy(timestamp = someday.toInstant, id = RequestContext.Id.fromString("mock-1")) @@ -116,7 +120,8 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), - auditSinkServiceCreator = _ => auditSink + auditSinkServiceCreator = _ => auditSink, + esNodeConfig = testEsNodeConfig, ).get val requestContext = MockRequestContext.indices.copy(timestamp = someday.toInstant, id = RequestContext.Id.fromString("mock-1")) @@ -130,7 +135,8 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), - auditSinkServiceCreator = _ => auditSink + auditSinkServiceCreator = _ => auditSink, + esNodeConfig = testEsNodeConfig, ).get val requestContext = MockRequestContext.indices.copy(timestamp = someday.toInstant, id = RequestContext.Id.fromString("mock-1")) @@ -151,7 +157,8 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter )) ) ), - auditSinkServiceCreator = _ => mock[AuditSinkService] + auditSinkServiceCreator = _ => mock[AuditSinkService], + esNodeConfig = testEsNodeConfig, ).get val requestContextId = RequestContext.Id.fromString(UUID.randomUUID().toString) @@ -171,7 +178,8 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "be disabled" in { val creationResult = AuditingTool.create( Settings(NonEmptyList.of(AuditSink.Disabled, AuditSink.Disabled, AuditSink.Disabled)), - _ => mock[AuditSinkService] + testEsNodeConfig, + _ => mock[AuditSinkService], ) creationResult should be(None) } @@ -182,7 +190,8 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter AuditSink.Enabled(Config.EsIndexBasedSink( serializer, RorAuditIndexTemplate.from("'test_'yyyy-MM-dd").toOption.get, - AuditCluster.LocalAuditCluster + AuditCluster.LocalAuditCluster, + enableReportingEsNodeDetails = false, )) )) diff --git a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala index 20cffeab26..70ec883c36 100644 --- a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala +++ b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala @@ -67,7 +67,7 @@ import scala.util.{Failure, Success} object TestsUtils { - implicit val loggingContext: LoggingContext = LoggingContext(Set.empty, testEsNodeConfig) + implicit val loggingContext: LoggingContext = LoggingContext(Set.empty) val rorYamlParser = new RorYamlParser(Megabytes(3)) def basicAuthHeader(value: String): Header = From 1ef3add742cdc627d0567722b55882ad7b78274a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sun, 4 May 2025 13:19:27 +0200 Subject: [PATCH 04/24] qs --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 090226e539..9783167718 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ publishedPluginVersion=1.63.0 -pluginVersion=1.64.0-pre5 +pluginVersion=1.64.0-pre7 pluginName=readonlyrest org.gradle.jvmargs=-Xmx6144m From 90708dce612b8f93c518be78f7a4a2ab62521e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sun, 4 May 2025 13:28:52 +0200 Subject: [PATCH 05/24] qs --- .../audit/AuditRequestContextBasedOnAclResult.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala index 5428e0f838..fe88dd7725 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditRequestContextBasedOnAclResult.scala @@ -30,7 +30,7 @@ import tech.beshu.ror.audit.{AuditRequestContext, Headers} import tech.beshu.ror.implicits.* import java.time.Instant -import scala.collection.immutable.Set as ScalaSet +import scala.collection.immutable.{Set => ScalaSet} private[audit] class AuditRequestContextBasedOnAclResult[B <: BlockContext](requestContext: RequestContext.Aux[B], userMetadata: Option[UserMetadata], From d17387aaf0268d74f47b60be829a641c04d5f8df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sun, 4 May 2025 23:04:33 +0200 Subject: [PATCH 06/24] qs --- .../factory/decoders/AuditingSettingsDecoder.scala | 4 ++-- .../test/resources/enabled_auditing_tools/readonlyrest.yml | 1 + .../ror/integration/suites/base/BaseAuditingToolsSuite.scala | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala index bdfea527b8..d3c8bcc289 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala @@ -135,7 +135,7 @@ object AuditingSettingsDecoder extends Logging { auditIndexTemplate <- c.downField("index_template").as[Option[RorAuditIndexTemplate]] customAuditSerializer <- c.downField("serializer").as[Option[AuditLogSerializer]] remoteAuditCluster <- c.downField("cluster").as[Option[AuditCluster.RemoteAuditCluster]] - enableReportingEsNodeDetails <- c.downField("enableReportingEsNodeDetails").as[Option[Boolean]] + enableReportingEsNodeDetails <- c.downField("enable_reporting_es_node_details").as[Option[Boolean]] } yield EsIndexBasedSink( customAuditSerializer.getOrElse(EsIndexBasedSink.default.logSerializer), auditIndexTemplate.getOrElse(EsIndexBasedSink.default.rorAuditIndexTemplate), @@ -232,7 +232,7 @@ object AuditingSettingsDecoder extends Logging { auditIndexTemplate <- decodeOptionalSetting[RorAuditIndexTemplate](c)("index_template", fallbackKey = "audit_index_template") customAuditSerializer <- decodeOptionalSetting[AuditLogSerializer](c)("serializer", fallbackKey = "audit_serializer") remoteAuditCluster <- decodeOptionalSetting[AuditCluster.RemoteAuditCluster](c)("cluster", fallbackKey = "audit_cluster") - enableReportingEsNodeDetails <- c.downField("enableReportingEsNodeDetails").as[Option[Boolean]] + enableReportingEsNodeDetails <- c.downField("enable_reporting_es_node_details").as[Option[Boolean]] } yield AuditingTool.Settings( auditSinks = NonEmptyList.one( AuditSink.Enabled( diff --git a/integration-tests/src/test/resources/enabled_auditing_tools/readonlyrest.yml b/integration-tests/src/test/resources/enabled_auditing_tools/readonlyrest.yml index fe916eed0a..1154efd5d1 100644 --- a/integration-tests/src/test/resources/enabled_auditing_tools/readonlyrest.yml +++ b/integration-tests/src/test/resources/enabled_auditing_tools/readonlyrest.yml @@ -5,6 +5,7 @@ readonlyrest: outputs: - type: index index_template: "'audit_index'" + enable_reporting_es_node_details: true access_control_rules: diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala index e188fa00e6..afa0a1354a 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala @@ -93,6 +93,7 @@ trait BaseAuditingToolsSuite auditEntries.size shouldBe 1 val firstEntry = auditEntries(0) + println(firstEntry) firstEntry("final_state").str shouldBe "FORBIDDEN" firstEntry("user").str shouldBe "user_token" } From 85c7115817199b528107f74b7281ec82f3e9c16e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Tue, 13 May 2025 18:34:51 +0200 Subject: [PATCH 07/24] qs --- ...gSerializerEnrichedWithEsNodeDetails.scala | 30 +++++++ ...ogSerializerEnrichedWithStaticFields.scala | 31 +++++++ .../accesscontrol/audit/AuditingTool.scala | 23 +++-- .../audit/EsIndexBasedAuditSink.scala | 29 +------ .../decoders/AuditingSettingsDecoder.scala | 4 +- es90x/gradle.properties | 2 +- integration-tests/build.gradle | 1 + .../LocalClusterAuditingToolsSuite.scala | 6 ++ .../RemoteClusterAuditingToolsSuite.scala | 6 ++ .../suites/base/BaseAuditingToolsSuite.scala | 83 ++++++++++++------- 10 files changed, 149 insertions(+), 66 deletions(-) create mode 100644 core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithEsNodeDetails.scala create mode 100644 core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithStaticFields.scala diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithEsNodeDetails.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithEsNodeDetails.scala new file mode 100644 index 0000000000..663d05d75b --- /dev/null +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithEsNodeDetails.scala @@ -0,0 +1,30 @@ +/* + * This file is part of ReadonlyREST. + * + * ReadonlyREST is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * ReadonlyREST is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ReadonlyREST. If not, see http://www.gnu.org/licenses/ + */ +package tech.beshu.ror.accesscontrol.audit + +import tech.beshu.ror.audit.AuditLogSerializer +import tech.beshu.ror.configuration.EsNodeConfig + +class AuditLogSerializerEnrichedWithEsNodeDetails(underlying: AuditLogSerializer, + esNodeConfig: EsNodeConfig) + extends AuditLogSerializerEnrichedWithStaticFields( + underlying, + Map( + "es_cluster_name" -> esNodeConfig.clusterName, + "es_node_name" -> esNodeConfig.nodeName, + ) + ) \ No newline at end of file diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithStaticFields.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithStaticFields.scala new file mode 100644 index 0000000000..c7ce8705cf --- /dev/null +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithStaticFields.scala @@ -0,0 +1,31 @@ +/* + * This file is part of ReadonlyREST. + * + * ReadonlyREST is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * ReadonlyREST is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ReadonlyREST. If not, see http://www.gnu.org/licenses/ + */ +package tech.beshu.ror.accesscontrol.audit + +import org.json.JSONObject +import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} + +private[audit] class AuditLogSerializerEnrichedWithStaticFields(underlying: AuditLogSerializer, + additionalFields: Map[String, String]) + extends AuditLogSerializer { + + override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = { + underlying.onResponse(responseContext) + .map(additionalFields.foldLeft(_) { case (soFar, (key, value)) => soFar.put(key, value) }) + } + +} diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala index e033fc4bc1..a33fbaeceb 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala @@ -23,7 +23,6 @@ import org.apache.logging.log4j.scala.Logging import org.json.JSONObject import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.{Disabled, Enabled} -import tech.beshu.ror.accesscontrol.audit.EsIndexBasedAuditSink.EsNodeDetailsReporting import tech.beshu.ror.accesscontrol.blocks.Block.{History, Verbosity} import tech.beshu.ror.accesscontrol.blocks.metadata.UserMetadata import tech.beshu.ror.accesscontrol.blocks.{Block, BlockContext} @@ -155,14 +154,22 @@ object AuditingTool extends Logging { final case class EsIndexBasedSink(logSerializer: AuditLogSerializer, rorAuditIndexTemplate: RorAuditIndexTemplate, auditCluster: AuditCluster, - enableReportingEsNodeDetails: Boolean) extends Config + options: EsIndexBasedSink.Options) extends Config object EsIndexBasedSink { val default: EsIndexBasedSink = EsIndexBasedSink( logSerializer = new DefaultAuditLogSerializer, rorAuditIndexTemplate = RorAuditIndexTemplate.default, auditCluster = AuditCluster.LocalAuditCluster, - enableReportingEsNodeDetails = false, + options = Options.default, ) + + final case class Options(enableReportingEsNodeDetails: Boolean) + object Options { + val default: Options = Options( + enableReportingEsNodeDetails = false, + ) + } + } final case class LogBasedSink(logSerializer: AuditLogSerializer, @@ -204,11 +211,11 @@ object AuditingTool extends Logging { .auditSinks .toList .flatMap { - case Enabled(AuditSink.Config.EsIndexBasedSink(logSerializer, rorAuditIndexTemplate, auditCluster, enableReportingEsNodeDetails)) => - val esNodeDetailsReporting = - if (enableReportingEsNodeDetails) EsNodeDetailsReporting.Enabled(esNodeConfig) - else EsNodeDetailsReporting.Disabled - EsIndexBasedAuditSink(logSerializer, rorAuditIndexTemplate, auditSinkServiceCreator(auditCluster), esNodeDetailsReporting).some + case Enabled(AuditSink.Config.EsIndexBasedSink(logSerializer, rorAuditIndexTemplate, auditCluster, options)) => + val serializer = + if (options.enableReportingEsNodeDetails) new AuditLogSerializerEnrichedWithEsNodeDetails(logSerializer, esNodeConfig) + else logSerializer + EsIndexBasedAuditSink(serializer, rorAuditIndexTemplate, auditSinkServiceCreator(auditCluster)).some case Enabled(AuditSink.Config.LogBasedSink(serializer, loggerName)) => new LogBasedAuditSink(serializer, loggerName).some case Disabled => diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/EsIndexBasedAuditSink.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/EsIndexBasedAuditSink.scala index 415bb512fb..601363f2b4 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/EsIndexBasedAuditSink.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/EsIndexBasedAuditSink.scala @@ -18,34 +18,23 @@ package tech.beshu.ror.accesscontrol.audit import monix.eval.Task import org.json.JSONObject -import tech.beshu.ror.accesscontrol.audit.EsIndexBasedAuditSink.EsNodeDetailsReporting import tech.beshu.ror.accesscontrol.domain.RorAuditIndexTemplate import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} -import tech.beshu.ror.configuration.EsNodeConfig import tech.beshu.ror.es.AuditSinkService import java.time.{Clock, Instant} private[audit] class EsIndexBasedAuditSink private(serializer: AuditLogSerializer, rorAuditIndexTemplate: RorAuditIndexTemplate, - auditSinkService: AuditSinkService, - esNodeDetailsReporting: EsNodeDetailsReporting) + auditSinkService: AuditSinkService) (implicit clock: Clock) extends BaseAuditSink(serializer) { override protected def submit(event: AuditResponseContext, serializedEvent: JSONObject): Task[Unit] = Task { - val enrichedEvent = esNodeDetailsReporting match { - case EsNodeDetailsReporting.Disabled => - serializedEvent - case EsNodeDetailsReporting.Enabled(esNodeConfig) => - serializedEvent - .put("es_cluster_name", esNodeConfig.clusterName) - .put("es_node_name", esNodeConfig.nodeName) - } auditSinkService.submit( rorAuditIndexTemplate.indexName(Instant.now(clock)).name.value, event.requestContext.id, - enrichedEvent.toString + serializedEvent.toString ) } @@ -54,19 +43,9 @@ private[audit] class EsIndexBasedAuditSink private(serializer: AuditLogSerialize object EsIndexBasedAuditSink { - sealed trait EsNodeDetailsReporting - - object EsNodeDetailsReporting { - case object Disabled extends EsNodeDetailsReporting - - final case class Enabled(esNodeConfig: EsNodeConfig) extends EsNodeDetailsReporting - } - def apply(serializer: AuditLogSerializer, indexTemplate: RorAuditIndexTemplate, - auditSinkService: AuditSinkService, - esNodeDetailsReporting: EsNodeDetailsReporting) - (implicit clock: Clock): EsIndexBasedAuditSink = { - new EsIndexBasedAuditSink(serializer, indexTemplate, auditSinkService, esNodeDetailsReporting) + auditSinkService: AuditSinkService)(implicit clock: Clock): EsIndexBasedAuditSink = { + new EsIndexBasedAuditSink(serializer, indexTemplate, auditSinkService) } } diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala index d3c8bcc289..a13a890382 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala @@ -140,7 +140,7 @@ object AuditingSettingsDecoder extends Logging { customAuditSerializer.getOrElse(EsIndexBasedSink.default.logSerializer), auditIndexTemplate.getOrElse(EsIndexBasedSink.default.rorAuditIndexTemplate), remoteAuditCluster.getOrElse(EsIndexBasedSink.default.auditCluster), - enableReportingEsNodeDetails.getOrElse(EsIndexBasedSink.default.enableReportingEsNodeDetails) + enableReportingEsNodeDetails.map(EsIndexBasedSink.Options(_)).getOrElse(EsIndexBasedSink.Options.default), ) } @@ -240,7 +240,7 @@ object AuditingSettingsDecoder extends Logging { logSerializer = customAuditSerializer.getOrElse(EsIndexBasedSink.default.logSerializer), rorAuditIndexTemplate = auditIndexTemplate.getOrElse(EsIndexBasedSink.default.rorAuditIndexTemplate), auditCluster = remoteAuditCluster.getOrElse(EsIndexBasedSink.default.auditCluster), - enableReportingEsNodeDetails = enableReportingEsNodeDetails.getOrElse(EsIndexBasedSink.default.enableReportingEsNodeDetails), + options = enableReportingEsNodeDetails.map(EsIndexBasedSink.Options(_)).getOrElse(EsIndexBasedSink.Options.default), ) ) ) diff --git a/es90x/gradle.properties b/es90x/gradle.properties index 56c7e0d915..a61e715638 100644 --- a/es90x/gradle.properties +++ b/es90x/gradle.properties @@ -1 +1 @@ -latestSupportedEsVersion=9.0.1 +latestSupportedEsVersion=9.0.0-rc1 diff --git a/integration-tests/build.gradle b/integration-tests/build.gradle index 7f0ccaf945..68bbb80e41 100644 --- a/integration-tests/build.gradle +++ b/integration-tests/build.gradle @@ -82,6 +82,7 @@ dependencies { testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.3.14' testRuntimeOnly group: 'org.pegdown', name: 'pegdown', version: '1.4.2' testImplementation group: 'org.scala-lang', name: 'scala3-library_3', version: '3.3.3' + testImplementation group: 'org.scalatestplus', name: 'scalacheck-1-16_3', version: '3.2.14.0' testImplementation group: 'org.scalatest', name: 'scalatest_3', version: '3.2.18' } diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala index 09c9eee04d..c5acab2803 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala @@ -21,6 +21,7 @@ import tech.beshu.ror.integration.suites.base.support.BaseSingleNodeEsClusterTes import tech.beshu.ror.integration.utils.SingletonPluginTestSupport import tech.beshu.ror.utils.containers.ElasticsearchNodeDataInitializer import tech.beshu.ror.utils.containers.providers.ClientProvider +import tech.beshu.ror.utils.elasticsearch.BaseManager.JSON import tech.beshu.ror.utils.elasticsearch.ElasticsearchTweetsInitializer class LocalClusterAuditingToolsSuite @@ -33,4 +34,9 @@ class LocalClusterAuditingToolsSuite override def nodeDataInitializer: Option[ElasticsearchNodeDataInitializer] = Some(ElasticsearchTweetsInitializer) override lazy val destNodeClientProvider: ClientProvider = this + + override def assertForEveryAuditEntry(entry: JSON): Unit = { + entry("es_node_name").str shouldBe "ROR_SINGLE_1" + entry("es_cluster_name").str shouldBe "ROR_SINGLE" + } } diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/RemoteClusterAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/RemoteClusterAuditingToolsSuite.scala index b53381a611..48fca4569c 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/RemoteClusterAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/RemoteClusterAuditingToolsSuite.scala @@ -23,6 +23,7 @@ import tech.beshu.ror.utils.containers.SecurityType.NoSecurityCluster import tech.beshu.ror.utils.containers.* import tech.beshu.ror.utils.containers.dependencies.* import tech.beshu.ror.utils.containers.providers.ClientProvider +import tech.beshu.ror.utils.elasticsearch.BaseManager.JSON import tech.beshu.ror.utils.elasticsearch.ElasticsearchTweetsInitializer class RemoteClusterAuditingToolsSuite @@ -48,4 +49,9 @@ class RemoteClusterAuditingToolsSuite override def clusterDependencies: List[DependencyDef] = List(es("AUDIT_1", auditEsContainer)) override lazy val destNodeClientProvider: ClientProvider = auditEsContainer + + override def assertForEveryAuditEntry(entry: JSON): Unit = { + entry("es_node_name").str shouldBe "ROR_SINGLE_1" + entry("es_cluster_name").str shouldBe "ROR_SINGLE" + } } diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala index afa0a1354a..1f61157ec4 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala @@ -16,31 +16,35 @@ */ package tech.beshu.ror.integration.suites.base +import better.files.File import org.scalatest.BeforeAndAfterEach import org.scalatest.concurrent.Eventually import org.scalatest.time.{Millis, Seconds, Span} import org.scalatest.wordspec.AnyWordSpec -import tech.beshu.ror.integration.suites.base.support.SingleClientSupport -import tech.beshu.ror.integration.utils.ESVersionSupportForAnyWordSpecLike -import tech.beshu.ror.utils.containers.EsClusterProvider -import tech.beshu.ror.utils.containers.providers.ClientProvider +import tech.beshu.ror.integration.suites.base.support.{BaseSingleNodeEsClusterTest, SingleClientSupport} +import tech.beshu.ror.integration.utils.{ESVersionSupportForAnyWordSpecLike, SingletonPluginTestSupport} +import tech.beshu.ror.utils.elasticsearch.BaseManager.JSON import tech.beshu.ror.utils.elasticsearch.{AuditIndexManager, IndexManager, RorApiManager} import tech.beshu.ror.utils.misc.CustomScalaTestMatchers +import tech.beshu.ror.utils.misc.Resources.getResourcePath +import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks import java.util.UUID -trait BaseAuditingToolsSuite +class BaseAuditingToolsSuite extends AnyWordSpec with ESVersionSupportForAnyWordSpecLike with SingleClientSupport with BeforeAndAfterEach with CustomScalaTestMatchers - with Eventually { - this: EsClusterProvider => + with Eventually + with ScalaCheckPropertyChecks + with BaseSingleNodeEsClusterTest + with SingletonPluginTestSupport { - protected def destNodeClientProvider: ClientProvider + override implicit val rorConfigFileName: String = "/enabled_auditing_tools/readonlyrest.yml" - private lazy val adminAuditIndexManager = new AuditIndexManager(destNodeClientProvider.adminClient, esVersionUsed, "audit_index") + private lazy val adminAuditIndexManager = new AuditIndexManager(adminClient, esVersionUsed, "audit_index") override def beforeEach(): Unit = { super.beforeEach() @@ -50,9 +54,21 @@ trait BaseAuditingToolsSuite implicit override val patienceConfig: PatienceConfig = PatienceConfig(timeout = scaled(Span(15, Seconds)), interval = scaled(Span(100, Millis))) - "Regular ES request" should { + lazy val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) + lazy val adminRorApiManager = new RorApiManager(adminClient, esVersionUsed) + + private lazy val simpleSyntaxTestParams = Table[String, String, JSON => Unit]( + ("name", "config", "assertionForEveryAuditEntry"), + ("LocalClusterAuditingToolsSuite", config("/enabled_auditing_tools/readonlyrest.yml"), _ => ()), + ) + + private def config(path: String) = File(getResourcePath(path)).contentAsString + + forAll(simpleSyntaxTestParams) { (name, config, assertForEveryAuditEntry) => + s"$name - Regular ES request" should { "be audited" when { "rule 1 is matched with logged user" in { + adminRorApiManager.updateRorTestConfig(config) val indexManager = new IndexManager(basicAuthClient("username", "dev"), esVersionUsed) val response = indexManager.getIndex("twitter") response should have statusCode 200 @@ -65,9 +81,11 @@ trait BaseAuditingToolsSuite firstEntry("final_state").str shouldBe "ALLOWED" firstEntry("user").str shouldBe "username" firstEntry("block").str.contains("name: 'Rule 1'") shouldBe true + assertForEveryAuditEntry(firstEntry) } } "no rule is matched with username from auth header" in { + adminRorApiManager.updateRorTestConfig(config) val indexManager = new IndexManager( basicAuthClient("username", "wrong"), esVersionUsed ) @@ -81,9 +99,11 @@ trait BaseAuditingToolsSuite val firstEntry = auditEntries(0) firstEntry("final_state").str shouldBe "FORBIDDEN" firstEntry("user").str shouldBe "username" + assertForEveryAuditEntry(firstEntry) } } "no rule is matched with raw auth header as user" in { + adminRorApiManager.updateRorTestConfig(config) val indexManager = new IndexManager(tokenAuthClient("user_token"), esVersionUsed) val response = indexManager.getIndex("twitter") response should have statusCode 403 @@ -96,10 +116,12 @@ trait BaseAuditingToolsSuite println(firstEntry) firstEntry("final_state").str shouldBe "FORBIDDEN" firstEntry("user").str shouldBe "user_token" + assertForEveryAuditEntry(firstEntry) } } "rule 1 is matched" when { "two requests were sent and correlationId is the same for both of them" in { + adminRorApiManager.updateRorTestConfig(config) val correlationId = UUID.randomUUID().toString val indexManager = new IndexManager( basicAuthClient("username", "dev"), @@ -118,12 +140,14 @@ trait BaseAuditingToolsSuite auditEntries.size shouldBe 2 auditEntries(0)("correlation_id").str shouldBe correlationId + assertForEveryAuditEntry(auditEntries(0)) auditEntries(1)("correlation_id").str shouldBe correlationId + assertForEveryAuditEntry(auditEntries(1)) } } "two requests were sent and the first one is user metadata request" in { - val userMetadataManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) - val userMetadataResponse = userMetadataManager.fetchMetadata() + adminRorApiManager.updateRorTestConfig(config) + val userMetadataResponse = rorApiManager.fetchMetadata() userMetadataResponse should have statusCode 200 val correlationId = userMetadataResponse.responseJson("x-ror-correlation-id").str @@ -142,16 +166,15 @@ trait BaseAuditingToolsSuite auditEntries.size shouldBe 2 auditEntries(0)("correlation_id").str shouldBe correlationId + assertForEveryAuditEntry(auditEntries(0)) auditEntries(1)("correlation_id").str shouldBe correlationId + assertForEveryAuditEntry(auditEntries(1)) } } "two metadata requests were sent, one with correlationId" in { + adminRorApiManager.updateRorTestConfig(config) def fetchMetadata(correlationId: Option[String]) = { - val userMetadataManager = new RorApiManager( - client = basicAuthClient("username", "dev"), - esVersion = esVersionUsed - ) - userMetadataManager.fetchMetadata(correlationId = correlationId) + rorApiManager.fetchMetadata(correlationId = correlationId) } val correlationId = UUID.randomUUID().toString @@ -170,12 +193,14 @@ trait BaseAuditingToolsSuite auditEntries.size shouldBe 2 auditEntries.map(_("correlation_id").str).toSet shouldBe Set(loggingId1, loggingId2) + auditEntries.map(assertForEveryAuditEntry) } } } } "not be audited" when { "rule 2 is matched" in { + adminRorApiManager.updateRorTestConfig(config) val indexManager = new IndexManager(basicAuthClient("username", "dev"), esVersionUsed) val response = indexManager.getIndex("facebook") response should have statusCode 200 @@ -192,8 +217,7 @@ trait BaseAuditingToolsSuite "be audited" when { "rule 3 is matched" when { "no JSON kay attribute from request body payload is defined in audit serializer" in { - val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) - + adminRorApiManager.updateRorTestConfig(config) val response = rorApiManager.sendAuditEvent(ujson.read("""{ "event": "logout" }""")).force() response should have statusCode 204 @@ -202,11 +226,11 @@ trait BaseAuditingToolsSuite val auditEntries = adminAuditIndexManager.getEntries.jsons auditEntries.size should be(1) auditEntries(0)("event").str should be("logout") + assertForEveryAuditEntry(auditEntries(0)) } } "user JSON key attribute from request doesn't override the defined in audit serializer" in { - val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) - + adminRorApiManager.updateRorTestConfig(config) val response = rorApiManager.sendAuditEvent(ujson.read("""{ "user": "unknown" }""")) response should have statusCode 204 @@ -215,11 +239,11 @@ trait BaseAuditingToolsSuite val auditEntries = adminAuditIndexManager.getEntries.jsons auditEntries.size should be(1) auditEntries(0)("user").str should be("username") + assertForEveryAuditEntry(auditEntries(0)) } } "new JSON key attribute from request body as a JSON value" in { - val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) - + adminRorApiManager.updateRorTestConfig(config) val response = rorApiManager.sendAuditEvent(ujson.read("""{ "event": { "field1": 1, "fields2": "f2" } }""")) response should have statusCode 204 @@ -228,15 +252,15 @@ trait BaseAuditingToolsSuite val auditEntries = adminAuditIndexManager.getEntries.jsons auditEntries.size should be(1) auditEntries(0)("event") should be(ujson.read("""{ "field1": 1, "fields2": "f2" }""")) + assertForEveryAuditEntry(auditEntries(0)) } } } } "not be audited" when { "admin rule is matched" in { - val rorApiManager = new RorApiManager(adminClient, esVersionUsed) - - val response = rorApiManager.sendAuditEvent(ujson.read("""{ "event": "logout" }""")) + adminRorApiManager.updateRorTestConfig(config) + val response = adminRorApiManager.sendAuditEvent(ujson.read("""{ "event": "logout" }""")) response should have statusCode 204 eventually { @@ -245,8 +269,7 @@ trait BaseAuditingToolsSuite } } "request JSON is malformed" in { - val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) - + adminRorApiManager.updateRorTestConfig(config) val response = rorApiManager.sendAuditEvent(ujson.read("""[]""")) response should have statusCode 400 response.responseJson should be(ujson.read( @@ -272,8 +295,7 @@ trait BaseAuditingToolsSuite } } "request JSON is too large (>5KB)" in { - val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) - + adminRorApiManager.updateRorTestConfig(config) val response = rorApiManager.sendAuditEvent(ujson.read(s"""{ "event": "${LazyList.continually("!").take(5000).mkString}" }""")) response should have statusCode 413 response.responseJson should be(ujson.read( @@ -300,4 +322,5 @@ trait BaseAuditingToolsSuite } } } + } } From d207a7f7644faf02b4e12e691452a79fdb9d3637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sat, 17 May 2025 23:33:43 +0200 Subject: [PATCH 08/24] qs --- .../suites/base/BaseAuditingToolsSuite.scala | 44 +++++-------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala index 1f61157ec4..75ec944012 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala @@ -16,22 +16,21 @@ */ package tech.beshu.ror.integration.suites.base -import better.files.File import org.scalatest.BeforeAndAfterEach import org.scalatest.concurrent.Eventually import org.scalatest.time.{Millis, Seconds, Span} import org.scalatest.wordspec.AnyWordSpec +import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks import tech.beshu.ror.integration.suites.base.support.{BaseSingleNodeEsClusterTest, SingleClientSupport} import tech.beshu.ror.integration.utils.{ESVersionSupportForAnyWordSpecLike, SingletonPluginTestSupport} +import tech.beshu.ror.utils.containers.providers.ClientProvider import tech.beshu.ror.utils.elasticsearch.BaseManager.JSON import tech.beshu.ror.utils.elasticsearch.{AuditIndexManager, IndexManager, RorApiManager} import tech.beshu.ror.utils.misc.CustomScalaTestMatchers -import tech.beshu.ror.utils.misc.Resources.getResourcePath -import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks import java.util.UUID -class BaseAuditingToolsSuite +trait BaseAuditingToolsSuite extends AnyWordSpec with ESVersionSupportForAnyWordSpecLike with SingleClientSupport @@ -42,9 +41,15 @@ class BaseAuditingToolsSuite with BaseSingleNodeEsClusterTest with SingletonPluginTestSupport { - override implicit val rorConfigFileName: String = "/enabled_auditing_tools/readonlyrest.yml" + protected def destNodeClientProvider: ClientProvider + + protected def assertForEveryAuditEntry(entry: JSON): Unit + + private lazy val adminAuditIndexManager = new AuditIndexManager(destNodeClientProvider.adminClient, esVersionUsed, "audit_index") + + lazy val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) + lazy val adminRorApiManager = new RorApiManager(adminClient, esVersionUsed) - private lazy val adminAuditIndexManager = new AuditIndexManager(adminClient, esVersionUsed, "audit_index") override def beforeEach(): Unit = { super.beforeEach() @@ -54,21 +59,9 @@ class BaseAuditingToolsSuite implicit override val patienceConfig: PatienceConfig = PatienceConfig(timeout = scaled(Span(15, Seconds)), interval = scaled(Span(100, Millis))) - lazy val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) - lazy val adminRorApiManager = new RorApiManager(adminClient, esVersionUsed) - - private lazy val simpleSyntaxTestParams = Table[String, String, JSON => Unit]( - ("name", "config", "assertionForEveryAuditEntry"), - ("LocalClusterAuditingToolsSuite", config("/enabled_auditing_tools/readonlyrest.yml"), _ => ()), - ) - - private def config(path: String) = File(getResourcePath(path)).contentAsString - - forAll(simpleSyntaxTestParams) { (name, config, assertForEveryAuditEntry) => - s"$name - Regular ES request" should { + "Regular ES request" should { "be audited" when { "rule 1 is matched with logged user" in { - adminRorApiManager.updateRorTestConfig(config) val indexManager = new IndexManager(basicAuthClient("username", "dev"), esVersionUsed) val response = indexManager.getIndex("twitter") response should have statusCode 200 @@ -85,7 +78,6 @@ class BaseAuditingToolsSuite } } "no rule is matched with username from auth header" in { - adminRorApiManager.updateRorTestConfig(config) val indexManager = new IndexManager( basicAuthClient("username", "wrong"), esVersionUsed ) @@ -103,7 +95,6 @@ class BaseAuditingToolsSuite } } "no rule is matched with raw auth header as user" in { - adminRorApiManager.updateRorTestConfig(config) val indexManager = new IndexManager(tokenAuthClient("user_token"), esVersionUsed) val response = indexManager.getIndex("twitter") response should have statusCode 403 @@ -121,7 +112,6 @@ class BaseAuditingToolsSuite } "rule 1 is matched" when { "two requests were sent and correlationId is the same for both of them" in { - adminRorApiManager.updateRorTestConfig(config) val correlationId = UUID.randomUUID().toString val indexManager = new IndexManager( basicAuthClient("username", "dev"), @@ -146,7 +136,6 @@ class BaseAuditingToolsSuite } } "two requests were sent and the first one is user metadata request" in { - adminRorApiManager.updateRorTestConfig(config) val userMetadataResponse = rorApiManager.fetchMetadata() userMetadataResponse should have statusCode 200 @@ -172,7 +161,6 @@ class BaseAuditingToolsSuite } } "two metadata requests were sent, one with correlationId" in { - adminRorApiManager.updateRorTestConfig(config) def fetchMetadata(correlationId: Option[String]) = { rorApiManager.fetchMetadata(correlationId = correlationId) } @@ -200,7 +188,6 @@ class BaseAuditingToolsSuite } "not be audited" when { "rule 2 is matched" in { - adminRorApiManager.updateRorTestConfig(config) val indexManager = new IndexManager(basicAuthClient("username", "dev"), esVersionUsed) val response = indexManager.getIndex("facebook") response should have statusCode 200 @@ -217,7 +204,6 @@ class BaseAuditingToolsSuite "be audited" when { "rule 3 is matched" when { "no JSON kay attribute from request body payload is defined in audit serializer" in { - adminRorApiManager.updateRorTestConfig(config) val response = rorApiManager.sendAuditEvent(ujson.read("""{ "event": "logout" }""")).force() response should have statusCode 204 @@ -230,7 +216,6 @@ class BaseAuditingToolsSuite } } "user JSON key attribute from request doesn't override the defined in audit serializer" in { - adminRorApiManager.updateRorTestConfig(config) val response = rorApiManager.sendAuditEvent(ujson.read("""{ "user": "unknown" }""")) response should have statusCode 204 @@ -243,7 +228,6 @@ class BaseAuditingToolsSuite } } "new JSON key attribute from request body as a JSON value" in { - adminRorApiManager.updateRorTestConfig(config) val response = rorApiManager.sendAuditEvent(ujson.read("""{ "event": { "field1": 1, "fields2": "f2" } }""")) response should have statusCode 204 @@ -259,7 +243,6 @@ class BaseAuditingToolsSuite } "not be audited" when { "admin rule is matched" in { - adminRorApiManager.updateRorTestConfig(config) val response = adminRorApiManager.sendAuditEvent(ujson.read("""{ "event": "logout" }""")) response should have statusCode 204 @@ -269,7 +252,6 @@ class BaseAuditingToolsSuite } } "request JSON is malformed" in { - adminRorApiManager.updateRorTestConfig(config) val response = rorApiManager.sendAuditEvent(ujson.read("""[]""")) response should have statusCode 400 response.responseJson should be(ujson.read( @@ -295,7 +277,6 @@ class BaseAuditingToolsSuite } } "request JSON is too large (>5KB)" in { - adminRorApiManager.updateRorTestConfig(config) val response = rorApiManager.sendAuditEvent(ujson.read(s"""{ "event": "${LazyList.continually("!").take(5000).mkString}" }""")) response should have statusCode 413 response.responseJson should be(ujson.read( @@ -322,5 +303,4 @@ class BaseAuditingToolsSuite } } } - } } From 2fe43a2e1efc3f151a9de7952b5d17f3ac3d8687 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sat, 17 May 2025 23:34:36 +0200 Subject: [PATCH 09/24] qs --- es90x/gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/es90x/gradle.properties b/es90x/gradle.properties index a61e715638..56c7e0d915 100644 --- a/es90x/gradle.properties +++ b/es90x/gradle.properties @@ -1 +1 @@ -latestSupportedEsVersion=9.0.0-rc1 +latestSupportedEsVersion=9.0.1 From 37efe2d7e53dbc65472863bbee5857c0ff732819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sun, 18 May 2025 18:27:35 +0200 Subject: [PATCH 10/24] qs --- .../test/resources/cluster_auditing_tools/readonlyrest.yml | 1 + .../test/resources/enabled_auditing_tools/readonlyrest.yml | 2 +- .../integration/suites/LocalClusterAuditingToolsSuite.scala | 5 +---- .../ror/integration/suites/base/BaseAuditingToolsSuite.scala | 1 - 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/integration-tests/src/test/resources/cluster_auditing_tools/readonlyrest.yml b/integration-tests/src/test/resources/cluster_auditing_tools/readonlyrest.yml index 2984c64791..8cb89835b3 100644 --- a/integration-tests/src/test/resources/cluster_auditing_tools/readonlyrest.yml +++ b/integration-tests/src/test/resources/cluster_auditing_tools/readonlyrest.yml @@ -6,6 +6,7 @@ readonlyrest: - type: index index_template: "'audit_index'" cluster: ["http://{AUDIT_1_HOST}:{AUDIT_1_PORT}"] + enable_reporting_es_node_details: true access_control_rules: diff --git a/integration-tests/src/test/resources/enabled_auditing_tools/readonlyrest.yml b/integration-tests/src/test/resources/enabled_auditing_tools/readonlyrest.yml index 1154efd5d1..af6899d334 100644 --- a/integration-tests/src/test/resources/enabled_auditing_tools/readonlyrest.yml +++ b/integration-tests/src/test/resources/enabled_auditing_tools/readonlyrest.yml @@ -5,7 +5,7 @@ readonlyrest: outputs: - type: index index_template: "'audit_index'" - enable_reporting_es_node_details: true + enable_reporting_es_node_details: false access_control_rules: diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala index c5acab2803..8d5413ef4b 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala @@ -35,8 +35,5 @@ class LocalClusterAuditingToolsSuite override lazy val destNodeClientProvider: ClientProvider = this - override def assertForEveryAuditEntry(entry: JSON): Unit = { - entry("es_node_name").str shouldBe "ROR_SINGLE_1" - entry("es_cluster_name").str shouldBe "ROR_SINGLE" - } + override def assertForEveryAuditEntry(entry: JSON): Unit = () } diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala index 75ec944012..1e55479ede 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala @@ -104,7 +104,6 @@ trait BaseAuditingToolsSuite auditEntries.size shouldBe 1 val firstEntry = auditEntries(0) - println(firstEntry) firstEntry("final_state").str shouldBe "FORBIDDEN" firstEntry("user").str shouldBe "user_token" assertForEveryAuditEntry(firstEntry) From 65f1e9b377dc5d6e137df2326fc12ea182ca0070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sun, 18 May 2025 18:53:53 +0200 Subject: [PATCH 11/24] qs --- .../integration/suites/LocalClusterAuditingToolsSuite.scala | 6 +++++- .../suites/RemoteClusterAuditingToolsSuite.scala | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala index 8d5413ef4b..53b7a99482 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/LocalClusterAuditingToolsSuite.scala @@ -35,5 +35,9 @@ class LocalClusterAuditingToolsSuite override lazy val destNodeClientProvider: ClientProvider = this - override def assertForEveryAuditEntry(entry: JSON): Unit = () + // Adding the ES cluster fields is disabled in the /enabled_auditing_tools/readonlyrest.yml config file (`enable_reporting_es_node_details: false`) + override def assertForEveryAuditEntry(entry: JSON): Unit = { + entry.obj.get("es_node_name") shouldBe None + entry.obj.get("es_cluster_name") shouldBe None + } } diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/RemoteClusterAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/RemoteClusterAuditingToolsSuite.scala index 48fca4569c..8b0c3eecfc 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/RemoteClusterAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/RemoteClusterAuditingToolsSuite.scala @@ -50,6 +50,7 @@ class RemoteClusterAuditingToolsSuite override lazy val destNodeClientProvider: ClientProvider = auditEsContainer + // Adding the ES cluster fields is enabled in the /cluster_auditing_tools/readonlyrest.yml config file (`enable_reporting_es_node_details: true`) override def assertForEveryAuditEntry(entry: JSON): Unit = { entry("es_node_name").str shouldBe "ROR_SINGLE_1" entry("es_cluster_name").str shouldBe "ROR_SINGLE" From b59a83bcb5c835c2c6e7e187ed0c4c863ff9025e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Fri, 23 May 2025 23:59:36 +0200 Subject: [PATCH 12/24] qs --- ...uditLogSerializerEnrichedWithEsNodeDetails.scala | 13 +++++++------ ...AuditLogSerializerEnrichedWithStaticFields.scala | 2 +- .../ror/accesscontrol/audit/AuditingTool.scala | 5 +++-- .../ror/integration/AuditOutputFormatTests.scala | 3 ++- .../ror/unit/acl/logging/AuditingToolTests.scala | 3 ++- .../suites/base/BaseAuditingToolsSuite.scala | 2 -- 6 files changed, 15 insertions(+), 13 deletions(-) rename {core/src/main/scala/tech/beshu/ror/accesscontrol/audit => audit/src/main/scala/tech/beshu/ror/audit/enrichers}/AuditLogSerializerEnrichedWithEsNodeDetails.scala (77%) rename {core/src/main/scala/tech/beshu/ror/accesscontrol/audit => audit/src/main/scala/tech/beshu/ror/audit/enrichers}/AuditLogSerializerEnrichedWithStaticFields.scala (96%) diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithEsNodeDetails.scala b/audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithEsNodeDetails.scala similarity index 77% rename from core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithEsNodeDetails.scala rename to audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithEsNodeDetails.scala index 663d05d75b..c4b9f4a39a 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithEsNodeDetails.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithEsNodeDetails.scala @@ -14,17 +14,18 @@ * You should have received a copy of the GNU General Public License * along with ReadonlyREST. If not, see http://www.gnu.org/licenses/ */ -package tech.beshu.ror.accesscontrol.audit +package tech.beshu.ror.audit.enrichers import tech.beshu.ror.audit.AuditLogSerializer -import tech.beshu.ror.configuration.EsNodeConfig class AuditLogSerializerEnrichedWithEsNodeDetails(underlying: AuditLogSerializer, - esNodeConfig: EsNodeConfig) + clusterName: String, + nodeName: String) extends AuditLogSerializerEnrichedWithStaticFields( underlying, Map( - "es_cluster_name" -> esNodeConfig.clusterName, - "es_node_name" -> esNodeConfig.nodeName, + "es_cluster_name" -> clusterName, + "es_node_name" -> nodeName, ) - ) \ No newline at end of file + ) + diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithStaticFields.scala b/audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithStaticFields.scala similarity index 96% rename from core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithStaticFields.scala rename to audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithStaticFields.scala index c7ce8705cf..d138e5a371 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditLogSerializerEnrichedWithStaticFields.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithStaticFields.scala @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with ReadonlyREST. If not, see http://www.gnu.org/licenses/ */ -package tech.beshu.ror.accesscontrol.audit +package tech.beshu.ror.audit.enrichers import org.json.JSONObject import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala index a33fbaeceb..37ec74cfd6 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala @@ -29,6 +29,7 @@ import tech.beshu.ror.accesscontrol.blocks.{Block, BlockContext} import tech.beshu.ror.accesscontrol.domain.{AuditCluster, RorAuditIndexTemplate, RorAuditLoggerName} import tech.beshu.ror.accesscontrol.logging.ResponseContext import tech.beshu.ror.accesscontrol.request.RequestContext +import tech.beshu.ror.audit.enrichers.AuditLogSerializerEnrichedWithEsNodeDetails import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer import tech.beshu.ror.audit.{AuditLogSerializer, AuditRequestContext, AuditResponseContext} import tech.beshu.ror.configuration.EsNodeConfig @@ -166,7 +167,7 @@ object AuditingTool extends Logging { final case class Options(enableReportingEsNodeDetails: Boolean) object Options { val default: Options = Options( - enableReportingEsNodeDetails = false, + enableReportingEsNodeDetails = true, ) } @@ -213,7 +214,7 @@ object AuditingTool extends Logging { .flatMap { case Enabled(AuditSink.Config.EsIndexBasedSink(logSerializer, rorAuditIndexTemplate, auditCluster, options)) => val serializer = - if (options.enableReportingEsNodeDetails) new AuditLogSerializerEnrichedWithEsNodeDetails(logSerializer, esNodeConfig) + if (options.enableReportingEsNodeDetails) new AuditLogSerializerEnrichedWithEsNodeDetails(logSerializer, esNodeConfig.clusterName, esNodeConfig.nodeName) else logSerializer EsIndexBasedAuditSink(serializer, rorAuditIndexTemplate, auditSinkServiceCreator(auditCluster)).some case Enabled(AuditSink.Config.LogBasedSink(serializer, loggerName)) => diff --git a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala index 67e2b21187..3902f46ed0 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala @@ -22,6 +22,7 @@ import org.scalatest.matchers.should.Matchers.* import org.scalatest.wordspec.AnyWordSpec import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config +import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config.EsIndexBasedSink import tech.beshu.ror.accesscontrol.audit.{AuditingTool, LoggingContext} import tech.beshu.ror.accesscontrol.domain.{AuditCluster, RorAuditIndexTemplate} import tech.beshu.ror.accesscontrol.logging.AccessControlListLoggingDecorator @@ -140,7 +141,7 @@ class AuditOutputFormatTests extends AnyWordSpec with BaseYamlLoadedAccessContro new DefaultAuditLogSerializer, RorAuditIndexTemplate.default, AuditCluster.LocalAuditCluster, - enableReportingEsNodeDetails = false, + EsIndexBasedSink.Options(enableReportingEsNodeDetails = false), )) ) ) diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala index a61a7676e2..2825da68cc 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala @@ -28,6 +28,7 @@ import tech.beshu.ror.accesscontrol.audit.AuditingTool import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config +import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config.EsIndexBasedSink import tech.beshu.ror.accesscontrol.blocks.Block import tech.beshu.ror.accesscontrol.blocks.Block.{Policy, Verbosity} import tech.beshu.ror.accesscontrol.blocks.BlockContext.GeneralIndexRequestBlockContext @@ -191,7 +192,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter serializer, RorAuditIndexTemplate.from("'test_'yyyy-MM-dd").toOption.get, AuditCluster.LocalAuditCluster, - enableReportingEsNodeDetails = false, + EsIndexBasedSink.Options(enableReportingEsNodeDetails = false), )) )) diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala index 1e55479ede..3bd82f2ef9 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala @@ -20,7 +20,6 @@ import org.scalatest.BeforeAndAfterEach import org.scalatest.concurrent.Eventually import org.scalatest.time.{Millis, Seconds, Span} import org.scalatest.wordspec.AnyWordSpec -import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks import tech.beshu.ror.integration.suites.base.support.{BaseSingleNodeEsClusterTest, SingleClientSupport} import tech.beshu.ror.integration.utils.{ESVersionSupportForAnyWordSpecLike, SingletonPluginTestSupport} import tech.beshu.ror.utils.containers.providers.ClientProvider @@ -37,7 +36,6 @@ trait BaseAuditingToolsSuite with BeforeAndAfterEach with CustomScalaTestMatchers with Eventually - with ScalaCheckPropertyChecks with BaseSingleNodeEsClusterTest with SingletonPluginTestSupport { From eaf09fc209fb0bc67aef378f10d04e21b3b59538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sat, 24 May 2025 15:12:37 +0200 Subject: [PATCH 13/24] merge fixes --- .../accesscontrol/audit/AuditingTool.scala | 52 ++++++++++++++----- .../decoders/AuditingSettingsDecoder.scala | 4 +- .../tech/beshu/ror/boot/ReadonlyRest.scala | 2 +- .../integration/AuditOutputFormatTests.scala | 10 ++-- .../unit/acl/logging/AuditingToolTests.scala | 17 ++++-- .../tech/beshu/ror/utils/TestsUtils.scala | 2 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 3 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 10 +++- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 + .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 + .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 + .../LocalClusterAuditingToolsSuite.scala | 10 ++-- .../suites/base/BaseAuditingToolsSuite.scala | 8 ++- 13 files changed, 87 insertions(+), 34 deletions(-) diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala index 021a3a8310..4c29d5bf31 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala @@ -34,6 +34,7 @@ import tech.beshu.ror.accesscontrol.request.RequestContext import tech.beshu.ror.audit.enrichers.AuditLogSerializerEnrichedWithEsNodeDetails import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer import tech.beshu.ror.audit.{AuditLogSerializer, AuditRequestContext, AuditResponseContext} +import tech.beshu.ror.configuration.EsNodeConfig import tech.beshu.ror.implicits.* import java.time.Clock @@ -160,6 +161,7 @@ object AuditingTool extends Logging { rorAuditIndexTemplate: RorAuditIndexTemplate, auditCluster: AuditCluster, options: EsIndexBasedSink.Options) extends Config + object EsIndexBasedSink { val default: EsIndexBasedSink = EsIndexBasedSink( logSerializer = new DefaultAuditLogSerializer, @@ -169,6 +171,7 @@ object AuditingTool extends Logging { ) final case class Options(enableReportingEsNodeDetails: Boolean) + object Options { val default: Options = Options( enableReportingEsNodeDetails = true, @@ -179,14 +182,24 @@ object AuditingTool extends Logging { final case class EsDataStreamBasedSink(logSerializer: AuditLogSerializer, rorAuditDataStream: RorAuditDataStream, - auditCluster: AuditCluster) extends Config + auditCluster: AuditCluster, + options: EsDataStreamBasedSink.Options) extends Config object EsDataStreamBasedSink { val default: EsDataStreamBasedSink = EsDataStreamBasedSink( logSerializer = new DefaultAuditLogSerializer, rorAuditDataStream = RorAuditDataStream.default, - auditCluster = AuditCluster.LocalAuditCluster + auditCluster = AuditCluster.LocalAuditCluster, + options = Options.default, ) + + final case class Options(enableReportingEsNodeDetails: Boolean) + + object Options { + val default: Options = Options( + enableReportingEsNodeDetails = true, + ) + } } final case class LogBasedSink(logSerializer: AuditLogSerializer, @@ -238,11 +251,11 @@ object AuditingTool extends Logging { case creator: DataStreamAndIndexBasedAuditSinkServiceCreator => creator case creator: IndexBasedAuditSinkServiceCreator => creator } - createIndexSink(config, serviceCreator).map(_.some.valid) + createIndexSink(config, serviceCreator, esNodeConfig).map(_.some.valid) case Enabled(config: AuditSink.Config.EsDataStreamBasedSink) => auditSinkServiceCreator match { case creator: DataStreamAndIndexBasedAuditSinkServiceCreator => - createDataStreamSink(config, creator).map(_.map(_.some)) + createDataStreamSink(config, creator, esNodeConfig).map(_.map(_.some)) case _: IndexBasedAuditSinkServiceCreator => // todo improvement - make this state impossible Task.raiseError(new IllegalStateException("Data stream audit sink is not supported in this version")) @@ -269,27 +282,42 @@ object AuditingTool extends Logging { } private def createIndexSink(config: AuditSink.Config.EsIndexBasedSink, - serviceCreator: IndexBasedAuditSinkServiceCreator)(using Clock): Task[SupportedAuditSink] = Task.delay { + serviceCreator: IndexBasedAuditSinkServiceCreator, + esNodeConfig: EsNodeConfig)(using Clock): Task[SupportedAuditSink] = Task.delay { val service = serviceCreator.index(config.auditCluster) - val serializer = - if (options.enableReportingEsNodeDetails) new AuditLogSerializerEnrichedWithEsNodeDetails(logSerializer, esNodeConfig.clusterName, esNodeConfig.nodeName) - else config.serializer - EsIndexBasedAuditSink(serializer, config.rorAuditIndexTemplate, service) + EsIndexBasedAuditSink( + serializer = decorateSerializer(config.logSerializer, config.options.enableReportingEsNodeDetails, esNodeConfig), + indexTemplate = config.rorAuditIndexTemplate, + auditSinkService = service + ) } private def createDataStreamSink(config: AuditSink.Config.EsDataStreamBasedSink, - serviceCreator: DataStreamAndIndexBasedAuditSinkServiceCreator): Task[Validated[CreationError, SupportedAuditSink]] = + serviceCreator: DataStreamAndIndexBasedAuditSinkServiceCreator, + esNodeConfig: EsNodeConfig): Task[Validated[CreationError, SupportedAuditSink]] = Task.delay(serviceCreator.dataStream(config.auditCluster)) .flatMap { auditSinkService => EsDataStreamBasedAuditSink.create( - config.logSerializer, + decorateSerializer(config.logSerializer, config.options.enableReportingEsNodeDetails, esNodeConfig), config.rorAuditDataStream, auditSinkService, config.auditCluster ).map(_.leftMap(error => CreationError(error.message)).toValidated) } - private def createSerializer() + private def decorateSerializer(logSerializer: AuditLogSerializer, + enableReportingEsNodeDetails: Boolean, + esNodeConfig: EsNodeConfig) = { + if (enableReportingEsNodeDetails) { + new AuditLogSerializerEnrichedWithEsNodeDetails( + underlying = logSerializer, + clusterName = esNodeConfig.clusterName, + nodeName = esNodeConfig.nodeName + ) + } else { + logSerializer + } + } private type SupportedAuditSink = EsIndexBasedAuditSink | EsDataStreamBasedAuditSink | LogBasedAuditSink diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala index c4ac4ae50a..c9453fd922 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala @@ -145,10 +145,12 @@ object AuditingSettingsDecoder extends Logging { rorAuditDataStream <- c.downField("data_stream").as[Option[RorAuditDataStream]] customAuditSerializer <- c.downField("serializer").as[Option[AuditLogSerializer]] remoteAuditCluster <- c.downField("cluster").as[Option[AuditCluster.RemoteAuditCluster]] + enableReportingEsNodeDetails <- c.downField("enable_reporting_es_node_details").as[Option[Boolean]] } yield EsDataStreamBasedSink( customAuditSerializer.getOrElse(EsDataStreamBasedSink.default.logSerializer), rorAuditDataStream.getOrElse(EsDataStreamBasedSink.default.rorAuditDataStream), - remoteAuditCluster.getOrElse(EsDataStreamBasedSink.default.auditCluster) + remoteAuditCluster.getOrElse(EsDataStreamBasedSink.default.auditCluster), + enableReportingEsNodeDetails.map(EsDataStreamBasedSink.Options(_)).getOrElse(EsDataStreamBasedSink.Options.default), ) } diff --git a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala index 47ef200d01..c069dec44a 100644 --- a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala +++ b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala @@ -237,7 +237,7 @@ class ReadonlyRest(coreFactory: CoreFactory, private def createAuditingTool(core: Core) (implicit loggingContext: LoggingContext): Task[Either[NonEmptyList[CoreCreationError], Option[AuditingTool]]] = { core.rorConfig.auditingSettings - .map(settings => AuditingTool.create(settings, auditSinkServiceCreator)(using environmentConfig.clock, loggingContext)) + .map(settings => AuditingTool.create(settings, esNodeConfig, auditSinkServiceCreator)(using environmentConfig.clock, loggingContext)) .sequence .map { _.sequence diff --git a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala index fb3055f6e3..3c81ae5a7d 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala @@ -25,6 +25,7 @@ import org.scalatest.matchers.should.Matchers.* import org.scalatest.wordspec.AnyWordSpec import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config +import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config.{EsDataStreamBasedSink, EsIndexBasedSink} import tech.beshu.ror.accesscontrol.audit.sink.{AuditDataStreamCreator, DataStreamAndIndexBasedAuditSinkServiceCreator} import tech.beshu.ror.accesscontrol.audit.{AuditingTool, LoggingContext} import tech.beshu.ror.accesscontrol.domain.* @@ -33,7 +34,7 @@ import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer import tech.beshu.ror.es.{DataStreamBasedAuditSinkService, DataStreamService, IndexBasedAuditSinkService} import tech.beshu.ror.mocks.MockRequestContext import tech.beshu.ror.syntax.* -import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, header, nes} +import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, header, nes, testEsNodeConfig} import java.time.{Clock, Instant, ZoneId} import scala.concurrent.duration.* @@ -158,17 +159,20 @@ class AuditOutputFormatTests extends AnyWordSpec with BaseYamlLoadedAccessContro AuditSink.Enabled(Config.EsIndexBasedSink( new DefaultAuditLogSerializer, RorAuditIndexTemplate.default, - AuditCluster.LocalAuditCluster + AuditCluster.LocalAuditCluster, + EsIndexBasedSink.Options(enableReportingEsNodeDetails = false), )), AuditSink.Enabled(Config.EsDataStreamBasedSink( new DefaultAuditLogSerializer, RorAuditDataStream.default, - AuditCluster.LocalAuditCluster + AuditCluster.LocalAuditCluster, + EsDataStreamBasedSink.Options(enableReportingEsNodeDetails = false), )) ) ) val auditingTool = AuditingTool.create( settings = settings, + esNodeConfig = testEsNodeConfig, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamBasedAuditSinkService diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala index 700ed6f845..f74e55f55e 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala @@ -29,6 +29,7 @@ import tech.beshu.ror.accesscontrol.audit.AuditingTool import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config +import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config.{EsDataStreamBasedSink, EsIndexBasedSink} import tech.beshu.ror.accesscontrol.audit.sink.{AuditDataStreamCreator, DataStreamAndIndexBasedAuditSinkServiceCreator} import tech.beshu.ror.accesscontrol.blocks.Block import tech.beshu.ror.accesscontrol.blocks.Block.{Policy, Verbosity} @@ -45,7 +46,7 @@ import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} import tech.beshu.ror.es.{DataStreamBasedAuditSinkService, DataStreamService, IndexBasedAuditSinkService} import tech.beshu.ror.mocks.MockRequestContext import tech.beshu.ror.syntax.* -import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, fullIndexName, nes, unsafeNes} +import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, fullIndexName, nes, testEsNodeConfig, unsafeNes} import java.time.* import java.util.UUID @@ -63,6 +64,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "request was allowed and verbosity level was ERROR" in { val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), + esNodeConfig = testEsNodeConfig, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mockedDataStreamBasedAuditSinkService @@ -75,6 +77,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "custom serializer throws exception" in { val auditingTool = AuditingTool.create( settings = auditSettings(throwingAuditLogSerializer), + esNodeConfig = testEsNodeConfig, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mockedDataStreamBasedAuditSinkService @@ -96,6 +99,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), + esNodeConfig = testEsNodeConfig, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -112,6 +116,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), + esNodeConfig = testEsNodeConfig, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -142,6 +147,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), + esNodeConfig = testEsNodeConfig, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -162,6 +168,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), + esNodeConfig = testEsNodeConfig, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -187,6 +194,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter )) ) ), + esNodeConfig = testEsNodeConfig, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mock[DataStreamBasedAuditSinkService] @@ -211,6 +219,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "be disabled" in { val creationResult = AuditingTool.create( settings = Settings(NonEmptyList.of(AuditSink.Disabled, AuditSink.Disabled, AuditSink.Disabled)), + esNodeConfig = testEsNodeConfig, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mock[DataStreamBasedAuditSinkService] @@ -226,12 +235,14 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter AuditSink.Enabled(Config.EsIndexBasedSink( serializer, RorAuditIndexTemplate.from("'test_'yyyy-MM-dd").toOption.get, - AuditCluster.LocalAuditCluster + AuditCluster.LocalAuditCluster, + EsIndexBasedSink.Options(enableReportingEsNodeDetails = false), )), AuditSink.Enabled(Config.EsDataStreamBasedSink( serializer, RorAuditDataStream.from("test_ds").toOption.get, - AuditCluster.LocalAuditCluster + AuditCluster.LocalAuditCluster, + EsDataStreamBasedSink.Options(enableReportingEsNodeDetails = false), )) )) diff --git a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala index 9715192501..625c8228be 100644 --- a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala +++ b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala @@ -50,7 +50,7 @@ import tech.beshu.ror.accesscontrol.domain.GroupIdLike.GroupId import tech.beshu.ror.accesscontrol.domain.Header.Name import tech.beshu.ror.accesscontrol.domain.KibanaApp.KibanaAppRegex import tech.beshu.ror.accesscontrol.domain.User.UserIdPattern -import tech.beshu.ror.configuration.RawRorConfig +import tech.beshu.ror.configuration.{EsNodeConfig, RawRorConfig} import tech.beshu.ror.es.EsVersion import tech.beshu.ror.syntax.* import tech.beshu.ror.utils.js.{JsCompiler, MozillaJsCompiler} diff --git a/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index cc67647b0f..86bf820b7f 100644 --- a/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -70,7 +70,8 @@ class IndexLevelActionFilter(nodeName: String, private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env) + EsEnvProvider.create(env), + rorEsConfig.esNodeConfig, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 1466319cd4..6523a2fc49 100644 --- a/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,6 +22,7 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.injection.guice.Inject @@ -36,6 +37,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -47,7 +49,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,8 +104,12 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds + private val esNodeConfig = EsNodeConfig( + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), + nodeName = Node.NODE_NAME_SETTING.get(s), + ) private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment)) + .load(EsEnvProvider.create(environment), esNodeConfig) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener diff --git a/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index f225dbec72..da8ba86810 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -39,6 +39,7 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.* import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.repositories.RepositoriesService diff --git a/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 67ff3ba075..4b348dd5f5 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -39,6 +39,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.* import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.repositories.RepositoriesService diff --git a/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 67ff3ba075..4b348dd5f5 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -39,6 +39,7 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService +import org.elasticsearch.node.Node import org.elasticsearch.plugins.* import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.repositories.RepositoriesService diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala index 5ca2daa707..fe2c82ef96 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala @@ -49,10 +49,10 @@ class LocalClusterAuditingToolsSuite override protected def baseAuditDataStreamName: Option[String] = Option.when(Version.greaterOrEqualThan(esVersionUsed, 7, 9, 0))("audit_data_stream") - // Adding the ES cluster fields is disabled in the /enabled_auditing_tools/readonlyrest.yml config file (`enable_reporting_es_node_details: false`) - override def assertForEveryAuditEntry(entry: JSON): Unit = { - entry.obj.get("es_node_name") shouldBe None - entry.obj.get("es_cluster_name") shouldBe None - } + // Adding the ES cluster fields is disabled in the /enabled_auditing_tools/readonlyrest.yml config file (`enable_reporting_es_node_details: false`) + override def assertForEveryAuditEntry(entry: JSON): Unit = { + entry.obj.get("es_node_name") shouldBe None + entry.obj.get("es_cluster_name") shouldBe None + } } diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala index 626a883203..1bd8ea2e78 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala @@ -62,10 +62,6 @@ trait BaseAuditingToolsSuite } .toMap - lazy val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) - lazy val adminRorApiManager = new RorApiManager(adminClient, esVersionUsed) - - override def beforeEach(): Unit = { super.beforeEach() adminAuditManagers.values.foreach(_.truncate()) @@ -282,7 +278,9 @@ trait BaseAuditingToolsSuite } "not be audited" when { "admin rule is matched" in { - val response = adminRorApiManager.sendAuditEvent(ujson.read("""{ "event": "logout" }""")) + val rorApiManager = new RorApiManager(adminClient, esVersionUsed) + + val response = rorApiManager.sendAuditEvent(ujson.read("""{ "event": "logout" }""")) response should have statusCode 204 forEachAuditManager { adminAuditManager => From 2a7499584166744f3b2cf0a8943143b2e0b8a9d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sat, 24 May 2025 23:12:01 +0200 Subject: [PATCH 14/24] qs --- .../readonlyrest_audit_index.yml | 1 - .../enabled_auditing_tools/readonlyrest.yml | 2 + .../suites/base/BaseAuditingToolsSuite.scala | 41 +++++++++++++------ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/integration-tests/src/test/resources/ror_audit/cluster_auditing_tools/readonlyrest_audit_index.yml b/integration-tests/src/test/resources/ror_audit/cluster_auditing_tools/readonlyrest_audit_index.yml index 8cb89835b3..2984c64791 100644 --- a/integration-tests/src/test/resources/ror_audit/cluster_auditing_tools/readonlyrest_audit_index.yml +++ b/integration-tests/src/test/resources/ror_audit/cluster_auditing_tools/readonlyrest_audit_index.yml @@ -6,7 +6,6 @@ readonlyrest: - type: index index_template: "'audit_index'" cluster: ["http://{AUDIT_1_HOST}:{AUDIT_1_PORT}"] - enable_reporting_es_node_details: true access_control_rules: diff --git a/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest.yml b/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest.yml index cd9850811a..d5fd1cdd01 100644 --- a/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest.yml +++ b/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest.yml @@ -5,8 +5,10 @@ readonlyrest: outputs: - type: index index_template: "'audit_index'" + enable_reporting_es_node_details: false - type: data_stream data_stream: "audit_data_stream" + enable_reporting_es_node_details: false access_control_rules: diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala index 1bd8ea2e78..1da161d157 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala @@ -20,11 +20,12 @@ import org.scalatest.BeforeAndAfterEach import org.scalatest.concurrent.Eventually import org.scalatest.time.{Millis, Seconds, Span} import org.scalatest.wordspec.AnyWordSpec -import tech.beshu.ror.integration.suites.base.support.{BaseSingleNodeEsClusterTest, SingleClientSupport} -import tech.beshu.ror.integration.utils.{ESVersionSupportForAnyWordSpecLike, SingletonPluginTestSupport} +import tech.beshu.ror.integration.suites.base.support.SingleClientSupport +import tech.beshu.ror.integration.utils.ESVersionSupportForAnyWordSpecLike +import tech.beshu.ror.utils.containers.EsClusterProvider import tech.beshu.ror.utils.containers.providers.ClientProvider -import tech.beshu.ror.utils.elasticsearch.BaseManager.JSON import tech.beshu.ror.utils.elasticsearch.* +import tech.beshu.ror.utils.elasticsearch.BaseManager.JSON import tech.beshu.ror.utils.elasticsearch.BaseTemplateManager.Template import tech.beshu.ror.utils.elasticsearch.ComponentTemplateManager.ComponentTemplate import tech.beshu.ror.utils.misc.Resources.getResourceContent @@ -38,9 +39,8 @@ trait BaseAuditingToolsSuite with SingleClientSupport with BeforeAndAfterEach with CustomScalaTestMatchers - with Eventually - with BaseSingleNodeEsClusterTest - with SingletonPluginTestSupport { + with Eventually { + this: EsClusterProvider => protected def destNodeClientProvider: ClientProvider @@ -153,14 +153,15 @@ trait BaseAuditingToolsSuite auditEntries.size shouldBe 2 auditEntries(0)("correlation_id").str shouldBe correlationId - assertForEveryAuditEntry(auditEntries(0)) auditEntries(1)("correlation_id").str shouldBe correlationId + assertForEveryAuditEntry(auditEntries(0)) assertForEveryAuditEntry(auditEntries(1)) } } } "two requests were sent and the first one is user metadata request" in { - val userMetadataResponse = rorApiManager.fetchMetadata() + val userMetadataManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) + val userMetadataResponse = userMetadataManager.fetchMetadata() userMetadataResponse should have statusCode 200 val correlationId = userMetadataResponse.responseJson("x-ror-correlation-id").str @@ -180,15 +181,19 @@ trait BaseAuditingToolsSuite auditEntries.size shouldBe 2 auditEntries(0)("correlation_id").str shouldBe correlationId - assertForEveryAuditEntry(auditEntries(0)) auditEntries(1)("correlation_id").str shouldBe correlationId + assertForEveryAuditEntry(auditEntries(0)) assertForEveryAuditEntry(auditEntries(1)) } } } "two metadata requests were sent, one with correlationId" in { def fetchMetadata(correlationId: Option[String]) = { - rorApiManager.fetchMetadata(correlationId = correlationId) + val userMetadataManager = new RorApiManager( + client = basicAuthClient("username", "dev"), + esVersion = esVersionUsed + ) + userMetadataManager.fetchMetadata(correlationId = correlationId) } val correlationId = UUID.randomUUID().toString @@ -208,7 +213,8 @@ trait BaseAuditingToolsSuite auditEntries.size shouldBe 2 auditEntries.map(_("correlation_id").str).toSet shouldBe Set(loggingId1, loggingId2) - auditEntries.map(assertForEveryAuditEntry) + assertForEveryAuditEntry(auditEntries(0)) + assertForEveryAuditEntry(auditEntries(1)) } } } @@ -233,6 +239,8 @@ trait BaseAuditingToolsSuite "be audited" when { "rule 3 is matched" when { "no JSON key attribute from request body payload is defined in audit serializer" in { + val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) + val response = rorApiManager.sendAuditEvent(ujson.read("""{ "event": "logout" }""")).force() response should have statusCode 204 @@ -247,6 +255,8 @@ trait BaseAuditingToolsSuite } } "user JSON key attribute from request doesn't override the defined in audit serializer" in { + val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) + val response = rorApiManager.sendAuditEvent(ujson.read("""{ "user": "unknown" }""")) response should have statusCode 204 @@ -261,6 +271,8 @@ trait BaseAuditingToolsSuite } } "new JSON key attribute from request body as a JSON value" in { + val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) + val response = rorApiManager.sendAuditEvent(ujson.read("""{ "event_obj": { "field1": 1, "fields2": "f2" } }""")) response should have statusCode 204 @@ -290,6 +302,8 @@ trait BaseAuditingToolsSuite } } "request JSON is malformed" in { + val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) + val response = rorApiManager.sendAuditEvent(ujson.read("""[]""")) response should have statusCode 400 response.responseJson should be(ujson.read( @@ -316,6 +330,8 @@ trait BaseAuditingToolsSuite } } "request JSON is too large (>5KB)" in { + val rorApiManager = new RorApiManager(basicAuthClient("username", "dev"), esVersionUsed) + val response = rorApiManager.sendAuditEvent(ujson.read(s"""{ "event": "${LazyList.continually("!").take(5000).mkString}" }""")) response should have statusCode 413 response.responseJson should be(ujson.read( @@ -544,6 +560,7 @@ trait BaseAuditingToolsSuite firstEntry("final_state").str shouldBe "ALLOWED" firstEntry("user").str shouldBe "username" firstEntry("block").str.contains("name: 'Rule 1'") shouldBe true + assertForEveryAuditEntry(firstEntry) } } @@ -761,4 +778,4 @@ trait BaseAuditingToolsSuite properties should contain allElementsOf (expectedProperties) } -} +} \ No newline at end of file From 7afc0b9225b6f4e8d99fdcd5940fddb68fe50406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sun, 25 May 2025 18:23:10 +0200 Subject: [PATCH 15/24] qs --- .../accesscontrol/audit/AuditingTool.scala | 26 +++++++++---------- .../tech/beshu/ror/boot/ReadonlyRest.scala | 14 +++++----- .../configuration/ReadonlyRestEsConfig.scala | 11 +++----- .../tech/beshu/ror/es/EsNodeSettings.scala | 19 ++++++++++++++ .../integration/AuditOutputFormatTests.scala | 4 +-- .../unit/acl/logging/AuditingToolTests.scala | 18 ++++++------- .../unit/boot/ReadonlyRestStartingTests.scala | 2 +- .../beshu/ror/unit/boot/RorIndexTest.scala | 2 +- .../tech/beshu/ror/utils/TestsUtils.scala | 6 ++--- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 19 +++++--------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 19 +++++--------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 19 +++++--------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/utils/EsEnvProvider.scala | 2 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 13 +++------- .../beshu/ror/es/IndexLevelActionFilter.scala | 6 +++-- .../beshu/ror/es/ReadonlyRestPlugin.scala | 19 +++++--------- 72 files changed, 319 insertions(+), 398 deletions(-) create mode 100644 core/src/main/scala/tech/beshu/ror/es/EsNodeSettings.scala diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala index 4c29d5bf31..3f5ecc49f2 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala @@ -34,7 +34,7 @@ import tech.beshu.ror.accesscontrol.request.RequestContext import tech.beshu.ror.audit.enrichers.AuditLogSerializerEnrichedWithEsNodeDetails import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer import tech.beshu.ror.audit.{AuditLogSerializer, AuditRequestContext, AuditResponseContext} -import tech.beshu.ror.configuration.EsNodeConfig +import tech.beshu.ror.es.EsNodeSettings import tech.beshu.ror.implicits.* import java.time.Clock @@ -218,11 +218,11 @@ object AuditingTool extends Logging { final case class CreationError(message: String) extends AnyVal def create(settings: Settings, - esNodeConfig: EsNodeConfig, + esNodeSettings: EsNodeSettings, auditSinkServiceCreator: AuditSinkServiceCreator) (implicit clock: Clock, loggingContext: LoggingContext): Task[Either[NonEmptyList[CreationError], Option[AuditingTool]]] = { - createAuditSinks(settings, esNodeConfig, auditSinkServiceCreator).map { + createAuditSinks(settings, esNodeSettings, auditSinkServiceCreator).map { _.map { case Some(auditSinks) => logger.info(s"The audit is enabled with the given outputs: [${auditSinks.toList.show}]") @@ -239,7 +239,7 @@ object AuditingTool extends Logging { } private def createAuditSinks(settings: Settings, - esNodeConfig: EsNodeConfig, + esNodeSettings: EsNodeSettings, auditSinkServiceCreator: AuditSinkServiceCreator) (using Clock): Task[ValidatedNel[CreationError, Option[NonEmptyList[SupportedAuditSink]]]] = { settings @@ -251,11 +251,11 @@ object AuditingTool extends Logging { case creator: DataStreamAndIndexBasedAuditSinkServiceCreator => creator case creator: IndexBasedAuditSinkServiceCreator => creator } - createIndexSink(config, serviceCreator, esNodeConfig).map(_.some.valid) + createIndexSink(config, serviceCreator, esNodeSettings).map(_.some.valid) case Enabled(config: AuditSink.Config.EsDataStreamBasedSink) => auditSinkServiceCreator match { case creator: DataStreamAndIndexBasedAuditSinkServiceCreator => - createDataStreamSink(config, creator, esNodeConfig).map(_.map(_.some)) + createDataStreamSink(config, creator, esNodeSettings).map(_.map(_.some)) case _: IndexBasedAuditSinkServiceCreator => // todo improvement - make this state impossible Task.raiseError(new IllegalStateException("Data stream audit sink is not supported in this version")) @@ -283,10 +283,10 @@ object AuditingTool extends Logging { private def createIndexSink(config: AuditSink.Config.EsIndexBasedSink, serviceCreator: IndexBasedAuditSinkServiceCreator, - esNodeConfig: EsNodeConfig)(using Clock): Task[SupportedAuditSink] = Task.delay { + esNodeSettings: EsNodeSettings)(using Clock): Task[SupportedAuditSink] = Task.delay { val service = serviceCreator.index(config.auditCluster) EsIndexBasedAuditSink( - serializer = decorateSerializer(config.logSerializer, config.options.enableReportingEsNodeDetails, esNodeConfig), + serializer = decorateSerializer(config.logSerializer, config.options.enableReportingEsNodeDetails, esNodeSettings), indexTemplate = config.rorAuditIndexTemplate, auditSinkService = service ) @@ -294,11 +294,11 @@ object AuditingTool extends Logging { private def createDataStreamSink(config: AuditSink.Config.EsDataStreamBasedSink, serviceCreator: DataStreamAndIndexBasedAuditSinkServiceCreator, - esNodeConfig: EsNodeConfig): Task[Validated[CreationError, SupportedAuditSink]] = + esNodeSettings: EsNodeSettings): Task[Validated[CreationError, SupportedAuditSink]] = Task.delay(serviceCreator.dataStream(config.auditCluster)) .flatMap { auditSinkService => EsDataStreamBasedAuditSink.create( - decorateSerializer(config.logSerializer, config.options.enableReportingEsNodeDetails, esNodeConfig), + decorateSerializer(config.logSerializer, config.options.enableReportingEsNodeDetails, esNodeSettings), config.rorAuditDataStream, auditSinkService, config.auditCluster @@ -307,12 +307,12 @@ object AuditingTool extends Logging { private def decorateSerializer(logSerializer: AuditLogSerializer, enableReportingEsNodeDetails: Boolean, - esNodeConfig: EsNodeConfig) = { + esNodeSettings: EsNodeSettings) = { if (enableReportingEsNodeDetails) { new AuditLogSerializerEnrichedWithEsNodeDetails( underlying = logSerializer, - clusterName = esNodeConfig.clusterName, - nodeName = esNodeConfig.nodeName + clusterName = esNodeSettings.clusterName, + nodeName = esNodeSettings.nodeName ) } else { logSerializer diff --git a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala index c069dec44a..a2632217b7 100644 --- a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala +++ b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala @@ -37,7 +37,7 @@ import tech.beshu.ror.configuration.ConfigLoading.{ErrorOr, LoadRorConfig} import tech.beshu.ror.configuration.TestConfigLoading.* import tech.beshu.ror.configuration.index.{IndexConfigManager, IndexTestConfigManager} import tech.beshu.ror.configuration.loader.* -import tech.beshu.ror.es.{EsEnv, IndexJsonContentService} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, IndexJsonContentService} import tech.beshu.ror.implicits.* import tech.beshu.ror.utils.DurationOps.PositiveFiniteDuration @@ -49,7 +49,7 @@ class ReadonlyRest(coreFactory: CoreFactory, val indexTestConfigManager: IndexTestConfigManager, val authServicesMocksProvider: MutableMocksProviderWithCachePerRequest, val esEnv: EsEnv, - val esNodeConfig: EsNodeConfig) + val esNodeSettings: EsNodeSettings) (implicit environmentConfig: EnvironmentConfig, scheduler: Scheduler) extends Logging { @@ -237,7 +237,7 @@ class ReadonlyRest(coreFactory: CoreFactory, private def createAuditingTool(core: Core) (implicit loggingContext: LoggingContext): Task[Either[NonEmptyList[CoreCreationError], Option[AuditingTool]]] = { core.rorConfig.auditingSettings - .map(settings => AuditingTool.create(settings, esNodeConfig, auditSinkServiceCreator)(using environmentConfig.clock, loggingContext)) + .map(settings => AuditingTool.create(settings, esNodeSettings, auditSinkServiceCreator)(using environmentConfig.clock, loggingContext)) .sequence .map { _.sequence @@ -310,24 +310,24 @@ object ReadonlyRest { def create(indexContentService: IndexJsonContentService, auditSinkServiceCreator: AuditSinkServiceCreator, env: EsEnv, - esNodeConfig: EsNodeConfig) + esNodeSettings: EsNodeSettings) (implicit scheduler: Scheduler, environmentConfig: EnvironmentConfig): ReadonlyRest = { val coreFactory: CoreFactory = new RawRorConfigBasedCoreFactory(env.esVersion) - create(coreFactory, indexContentService, auditSinkServiceCreator, env, esNodeConfig) + create(coreFactory, indexContentService, auditSinkServiceCreator, env, esNodeSettings) } def create(coreFactory: CoreFactory, indexContentService: IndexJsonContentService, auditSinkServiceCreator: AuditSinkServiceCreator, env: EsEnv, - esNodeConfig: EsNodeConfig) + esNodeSettings: EsNodeSettings) (implicit scheduler: Scheduler, environmentConfig: EnvironmentConfig): ReadonlyRest = { val indexConfigManager: IndexConfigManager = new IndexConfigManager(indexContentService) val indexTestConfigManager: IndexTestConfigManager = new IndexTestConfigManager(indexContentService) val mocksProvider = new MutableMocksProviderWithCachePerRequest(AuthServicesMocks.empty) - new ReadonlyRest(coreFactory, auditSinkServiceCreator, indexConfigManager, indexTestConfigManager, mocksProvider, env, esNodeConfig) + new ReadonlyRest(coreFactory, auditSinkServiceCreator, indexConfigManager, indexTestConfigManager, mocksProvider, env, esNodeSettings) } } \ No newline at end of file diff --git a/core/src/main/scala/tech/beshu/ror/configuration/ReadonlyRestEsConfig.scala b/core/src/main/scala/tech/beshu/ror/configuration/ReadonlyRestEsConfig.scala index d00308f629..2cfff86701 100644 --- a/core/src/main/scala/tech/beshu/ror/configuration/ReadonlyRestEsConfig.scala +++ b/core/src/main/scala/tech/beshu/ror/configuration/ReadonlyRestEsConfig.scala @@ -23,23 +23,18 @@ import tech.beshu.ror.utils.ScalaOps.* final case class ReadonlyRestEsConfig(bootConfig: RorBootConfiguration, sslConfig: RorSsl, - fipsConfig: FipsConfiguration, - esNodeConfig: EsNodeConfig) - -final case class EsNodeConfig(clusterName: String, - nodeName: String) + fipsConfig: FipsConfiguration) object ReadonlyRestEsConfig { - def load(esEnv: EsEnv, - esNodeConfig: EsNodeConfig) + def load(esEnv: EsEnv) (implicit environmentConfig: EnvironmentConfig): Task[Either[MalformedSettings, ReadonlyRestEsConfig]] = { value { for { bootConfig <- EitherT(RorBootConfiguration.load(esEnv)) sslConfig <- EitherT(RorSsl.load(esEnv)) fipsConfig <- EitherT(FipsConfiguration.load(esEnv)) - } yield ReadonlyRestEsConfig(bootConfig, sslConfig, fipsConfig, esNodeConfig) + } yield ReadonlyRestEsConfig(bootConfig, sslConfig, fipsConfig) } } } diff --git a/core/src/main/scala/tech/beshu/ror/es/EsNodeSettings.scala b/core/src/main/scala/tech/beshu/ror/es/EsNodeSettings.scala new file mode 100644 index 0000000000..01dd05f0e6 --- /dev/null +++ b/core/src/main/scala/tech/beshu/ror/es/EsNodeSettings.scala @@ -0,0 +1,19 @@ +/* + * This file is part of ReadonlyREST. + * + * ReadonlyREST is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * ReadonlyREST is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ReadonlyREST. If not, see http://www.gnu.org/licenses/ + */ +package tech.beshu.ror.es + +case class EsNodeSettings(nodeName: String, clusterName: String) diff --git a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala index 3c81ae5a7d..26459c7b86 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala @@ -34,7 +34,7 @@ import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer import tech.beshu.ror.es.{DataStreamBasedAuditSinkService, DataStreamService, IndexBasedAuditSinkService} import tech.beshu.ror.mocks.MockRequestContext import tech.beshu.ror.syntax.* -import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, header, nes, testEsNodeConfig} +import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, header, nes, testEsNodeSettings} import java.time.{Clock, Instant, ZoneId} import scala.concurrent.duration.* @@ -172,7 +172,7 @@ class AuditOutputFormatTests extends AnyWordSpec with BaseYamlLoadedAccessContro ) val auditingTool = AuditingTool.create( settings = settings, - esNodeConfig = testEsNodeConfig, + esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamBasedAuditSinkService diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala index f74e55f55e..81c0a93b1a 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala @@ -46,7 +46,7 @@ import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} import tech.beshu.ror.es.{DataStreamBasedAuditSinkService, DataStreamService, IndexBasedAuditSinkService} import tech.beshu.ror.mocks.MockRequestContext import tech.beshu.ror.syntax.* -import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, fullIndexName, nes, testEsNodeConfig, unsafeNes} +import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, fullIndexName, nes, testEsNodeSettings, unsafeNes} import java.time.* import java.util.UUID @@ -64,7 +64,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "request was allowed and verbosity level was ERROR" in { val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), - esNodeConfig = testEsNodeConfig, + esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mockedDataStreamBasedAuditSinkService @@ -77,7 +77,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "custom serializer throws exception" in { val auditingTool = AuditingTool.create( settings = auditSettings(throwingAuditLogSerializer), - esNodeConfig = testEsNodeConfig, + esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mockedDataStreamBasedAuditSinkService @@ -99,7 +99,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), - esNodeConfig = testEsNodeConfig, + esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -116,7 +116,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), - esNodeConfig = testEsNodeConfig, + esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -147,7 +147,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), - esNodeConfig = testEsNodeConfig, + esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -168,7 +168,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter val auditingTool = AuditingTool.create( settings = auditSettings(new DefaultAuditLogSerializer), - esNodeConfig = testEsNodeConfig, + esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -194,7 +194,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter )) ) ), - esNodeConfig = testEsNodeConfig, + esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mock[DataStreamBasedAuditSinkService] @@ -219,7 +219,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "be disabled" in { val creationResult = AuditingTool.create( settings = Settings(NonEmptyList.of(AuditSink.Disabled, AuditSink.Disabled, AuditSink.Disabled)), - esNodeConfig = testEsNodeConfig, + esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mock[DataStreamBasedAuditSinkService] diff --git a/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala b/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala index 23edcf1ad4..bed2ffd669 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala @@ -1424,7 +1424,7 @@ class ReadonlyRestStartingTests indexJsonContentService, auditSinkServiceCreator, EsEnv(getResourcePath(configPath), getResourcePath(configPath), defaultEsVersionForTests), - testEsNodeConfig, + testEsNodeSettings, ) } diff --git a/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala b/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala index e37bc8fbb2..7b0e83c931 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala @@ -230,7 +230,7 @@ class RorIndexTest extends AnyWordSpec indexJsonContentService, mock[AuditSinkServiceCreator], EsEnv(getResourcePath(configPath), getResourcePath(configPath), defaultEsVersionForTests), - testEsNodeConfig, + testEsNodeSettings, ) } diff --git a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala index 625c8228be..f5d4945c9e 100644 --- a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala +++ b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala @@ -50,8 +50,8 @@ import tech.beshu.ror.accesscontrol.domain.GroupIdLike.GroupId import tech.beshu.ror.accesscontrol.domain.Header.Name import tech.beshu.ror.accesscontrol.domain.KibanaApp.KibanaAppRegex import tech.beshu.ror.accesscontrol.domain.User.UserIdPattern -import tech.beshu.ror.configuration.{EsNodeConfig, RawRorConfig} -import tech.beshu.ror.es.EsVersion +import tech.beshu.ror.configuration.RawRorConfig +import tech.beshu.ror.es.{EsNodeSettings, EsVersion} import tech.beshu.ror.syntax.* import tech.beshu.ror.utils.js.{JsCompiler, MozillaJsCompiler} import tech.beshu.ror.utils.json.JsonPath @@ -403,7 +403,7 @@ object TestsUtils { File(getResourcePath(resource)).contentAsString } - def testEsNodeConfig: EsNodeConfig = EsNodeConfig(clusterName = "testEsCluster", nodeName = "testEsNode") + def testEsNodeSettings: EsNodeSettings = EsNodeSettings(clusterName = "testEsCluster", nodeName = "testEsNode") implicit class ValueOrIllegalState[ERROR, SUCCESS](private val eitherT: EitherT[Task, ERROR, SUCCESS]) extends AnyVal { diff --git a/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 57ca3d7fe1..a1eca4c147 100644 --- a/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,7 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -65,11 +65,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 6d4a630bc4..2b4cca7a0d 100644 --- a/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -51,7 +49,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,12 +100,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -127,7 +122,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) namedWriteableRegistry: NamedWriteableRegistry): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 57ca3d7fe1..a1eca4c147 100644 --- a/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,7 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -65,11 +65,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 6c6d0bb843..8fed4c089b 100644 --- a/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -51,7 +49,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,12 +100,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -127,7 +122,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) namedWriteableRegistry: NamedWriteableRegistry): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 9c180ebbd1..9794afb4d5 100644 --- a/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 2418fb08be..4840ad31b5 100644 --- a/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -52,7 +50,7 @@ import org.elasticsearch.transport.{SharedGroupFactory, Transport, TransportInte import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -132,7 +127,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 9c180ebbd1..9794afb4d5 100644 --- a/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 2418fb08be..4840ad31b5 100644 --- a/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -52,7 +50,7 @@ import org.elasticsearch.transport.{SharedGroupFactory, Transport, TransportInte import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -132,7 +127,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 9c180ebbd1..9794afb4d5 100644 --- a/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 2418fb08be..4840ad31b5 100644 --- a/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -52,7 +50,7 @@ import org.elasticsearch.transport.{SharedGroupFactory, Transport, TransportInte import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -132,7 +127,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index ec8a1f88f0..37f3bff61a 100644 --- a/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index bd4ab74b03..59df57a205 100644 --- a/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,7 +38,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -52,7 +50,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -132,7 +127,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index ec8a1f88f0..37f3bff61a 100644 --- a/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 0f2ca056b7..a90d01b53b 100644 --- a/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -39,7 +38,6 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -52,7 +50,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -132,7 +127,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 57ca3d7fe1..a1eca4c147 100644 --- a/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,7 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -65,11 +65,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 6c6d0bb843..8fed4c089b 100644 --- a/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -51,7 +49,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,12 +100,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -127,7 +122,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) namedWriteableRegistry: NamedWriteableRegistry): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 57ca3d7fe1..a1eca4c147 100644 --- a/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,7 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -65,11 +65,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index c78df5f998..b4137f0d83 100644 --- a/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -51,7 +49,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,12 +100,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -127,7 +122,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) namedWriteableRegistry: NamedWriteableRegistry): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 57ca3d7fe1..a1eca4c147 100644 --- a/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,7 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -65,11 +65,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 80d3ec0f2b..c1b40e5ed9 100644 --- a/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -51,7 +49,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,12 +100,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -127,7 +122,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) namedWriteableRegistry: NamedWriteableRegistry): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 804b41e6d5..c4145fba4a 100644 --- a/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,7 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -65,11 +65,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index d7f1465586..bd42e357d7 100644 --- a/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -51,7 +49,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,12 +100,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -128,7 +123,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) indexNameExpressionResolver: IndexNameExpressionResolver): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index ea177a7972..24711f186a 100644 --- a/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,7 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -65,11 +65,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index c6b45f70a5..ef8b2ba8bd 100644 --- a/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.MapperService import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -52,7 +50,7 @@ import org.elasticsearch.transport.netty4.Netty4Utils import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -103,12 +101,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -130,7 +125,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 9c180ebbd1..9794afb4d5 100644 --- a/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 8091daae7b..0d05fe024c 100644 --- a/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -40,7 +39,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -52,7 +50,7 @@ import org.elasticsearch.transport.{SharedGroupFactory, Transport, TransportInte import org.elasticsearch.watcher.ResourceWatcherService import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -132,7 +127,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index ec8a1f88f0..37f3bff61a 100644 --- a/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index c4e59a1f23..8c3d29541b 100644 --- a/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.Client import org.elasticsearch.client.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -38,7 +37,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -51,7 +49,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -132,7 +127,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 0429c3e476..3a738afab6 100644 --- a/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.AllocationService @@ -40,7 +39,6 @@ import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.IndicesService import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -54,7 +52,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -109,12 +107,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -140,7 +135,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) indicesService: IndicesService): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index bd53c27467..1808ac344e 100644 --- a/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.AllocationService @@ -40,7 +39,6 @@ import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.IndicesService import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -55,7 +53,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -110,12 +108,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -141,7 +136,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) indicesService: IndicesService): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ff35b0031f..2edddba82c 100644 --- a/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,7 +22,6 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.common.inject.Inject @@ -36,7 +35,6 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -47,7 +45,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -102,12 +100,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -122,7 +117,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) val client = services.client() val repositoriesServiceSupplier = services.repositoriesServiceSupplier() ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), client.asInstanceOf[NodeClient], services.threadPool(), diff --git a/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 2478de6aa3..1a4f338178 100644 --- a/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,7 +22,6 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.common.inject.Inject @@ -37,7 +36,6 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -48,7 +46,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -103,12 +101,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -123,7 +118,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) val client = services.client() val repositoriesServiceSupplier = services.repositoriesServiceSupplier() ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), client.asInstanceOf[NodeClient], services.threadPool(), diff --git a/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 2478de6aa3..1a4f338178 100644 --- a/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,7 +22,6 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.common.inject.Inject @@ -37,7 +36,6 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.rest.{RestController, RestHandler} @@ -48,7 +46,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -103,12 +101,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -123,7 +118,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) val client = services.client() val repositoriesServiceSupplier = services.repositoriesServiceSupplier() ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), client.asInstanceOf[NodeClient], services.threadPool(), diff --git a/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index e6e2dfe378..87c67c225b 100644 --- a/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,7 +22,6 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.common.inject.Inject @@ -37,7 +36,6 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -49,7 +47,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -121,18 +116,18 @@ class ReadonlyRestPlugin(s: Settings, p: Path) override def createComponents(services: Plugin.PluginServices): util.Collection[_] = { doPrivileged { - val nodeClient = services.client().asInstanceOf[NodeClient] + val client = services.client().asInstanceOf[NodeClient] val repositoriesServiceSupplier = new Supplier[RepositoriesService] { override def get(): RepositoriesService = services.repositoriesService() } ilaf = new IndexLevelActionFilter( - nodeClient.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), - nodeClient, + client, services.threadPool(), services.xContentRegistry(), environment, - new RemoteClusterServiceSupplier(nodeClient), + new RemoteClusterServiceSupplier(client), () => Some(repositoriesServiceSupplier.get()), esInitListener, rorEsConfig diff --git a/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 2f5ac09b64..01af14e4d7 100644 --- a/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 6523a2fc49..772e5993e9 100644 --- a/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,7 +22,6 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.injection.guice.Inject @@ -37,7 +36,6 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -49,7 +47,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -121,18 +116,18 @@ class ReadonlyRestPlugin(s: Settings, p: Path) override def createComponents(services: Plugin.PluginServices): util.Collection[_] = { doPrivileged { - val nodeClient = services.client().asInstanceOf[NodeClient] + val client = services.client().asInstanceOf[NodeClient] val repositoriesServiceSupplier = new Supplier[RepositoriesService] { override def get(): RepositoriesService = services.repositoriesService() } ilaf = new IndexLevelActionFilter( - nodeClient.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), - nodeClient, + client, services.threadPool(), services.xContentRegistry(), environment, - new RemoteClusterServiceSupplier(nodeClient), + new RemoteClusterServiceSupplier(client), () => Some(repositoriesServiceSupplier.get()), esInitListener, rorEsConfig diff --git a/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 6523a2fc49..772e5993e9 100644 --- a/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,7 +22,6 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.injection.guice.Inject @@ -37,7 +36,6 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -49,7 +47,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -121,18 +116,18 @@ class ReadonlyRestPlugin(s: Settings, p: Path) override def createComponents(services: Plugin.PluginServices): util.Collection[_] = { doPrivileged { - val nodeClient = services.client().asInstanceOf[NodeClient] + val client = services.client().asInstanceOf[NodeClient] val repositoriesServiceSupplier = new Supplier[RepositoriesService] { override def get(): RepositoriesService = services.repositoriesService() } ilaf = new IndexLevelActionFilter( - nodeClient.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), - nodeClient, + client, services.threadPool(), services.xContentRegistry(), environment, - new RemoteClusterServiceSupplier(nodeClient), + new RemoteClusterServiceSupplier(client), () => Some(repositoriesServiceSupplier.get()), esInitListener, rorEsConfig diff --git a/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 1eda5cdb20..0633620e00 100644 --- a/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 1c83a38613..0c5bf0e12b 100644 --- a/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -38,7 +37,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -51,7 +49,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -132,7 +127,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 1eda5cdb20..0633620e00 100644 --- a/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 1c83a38613..0c5bf0e12b 100644 --- a/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -38,7 +37,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -51,7 +49,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -132,7 +127,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 1eda5cdb20..0633620e00 100644 --- a/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index e50ad5ef45..10e12f2697 100644 --- a/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -38,7 +37,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -51,7 +49,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -104,12 +102,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -132,7 +127,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 1eda5cdb20..0633620e00 100644 --- a/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index af3b9e0e5e..4264bef226 100644 --- a/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.service.ClusterService @@ -38,7 +37,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -52,7 +50,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -105,12 +103,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -134,7 +129,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) tracer: Tracer): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 99fc33d9d1..1433573d4d 100644 --- a/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.decider.AllocationDeciders @@ -39,7 +38,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -53,7 +51,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -108,12 +106,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -138,7 +133,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) allocationDeciders: AllocationDeciders): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index da8ba86810..76a7fe8f0a 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.AllocationService @@ -39,7 +38,6 @@ import org.elasticsearch.http.HttpServerTransport import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.* import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.repositories.RepositoriesService @@ -53,7 +51,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -108,12 +106,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -138,7 +133,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) allocationService: AllocationService): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 4b348dd5f5..2bd67b8964 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.AllocationService @@ -39,7 +38,6 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.* import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.repositories.RepositoriesService @@ -53,7 +51,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -108,12 +106,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -138,7 +133,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) allocationService: AllocationService): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..92ab663245 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -25,7 +25,7 @@ object EsEnvProvider { EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), ) } } diff --git a/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 86bf820b7f..fdeaffa4f9 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 4b348dd5f5..2bd67b8964 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -23,7 +23,6 @@ import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.Client import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.cluster.routing.allocation.AllocationService @@ -39,7 +38,6 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.* import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.repositories.RepositoriesService @@ -53,7 +51,7 @@ import org.elasticsearch.watcher.ResourceWatcherService import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -108,12 +106,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -138,7 +133,7 @@ class ReadonlyRestPlugin(s: Settings, p: Path) allocationService: AllocationService): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - client.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 935ef93b74..e58bbd3490 100644 --- a/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,7 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(nodeName: String, +class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, @@ -67,11 +67,13 @@ class IndexLevelActionFilter(nodeName: String, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) + private val nodeName = esNodeSettings.nodeName + private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, EsEnvProvider.create(env), - rorEsConfig.esNodeConfig, + esNodeSettings, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index c780174507..ae05465091 100644 --- a/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -22,7 +22,6 @@ import org.elasticsearch.ElasticsearchException import org.elasticsearch.action.support.ActionFilter import org.elasticsearch.action.{ActionRequest, ActionResponse} import org.elasticsearch.client.internal.node.NodeClient -import org.elasticsearch.cluster.ClusterName import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver import org.elasticsearch.cluster.node.DiscoveryNodes import org.elasticsearch.injection.guice.Inject @@ -37,7 +36,6 @@ import org.elasticsearch.http.{HttpPreRequest, HttpServerTransport} import org.elasticsearch.index.IndexModule import org.elasticsearch.index.mapper.IgnoredFieldMapper import org.elasticsearch.indices.breaker.CircuitBreakerService -import org.elasticsearch.node.Node import org.elasticsearch.plugins.ActionPlugin.ActionHandler import org.elasticsearch.plugins.* import org.elasticsearch.repositories.RepositoriesService @@ -49,7 +47,7 @@ import org.elasticsearch.transport.{Transport, TransportInterceptor} import org.elasticsearch.xcontent.NamedXContentRegistry import tech.beshu.ror.boot.{EsInitListener, SecurityProviderConfiguratorForFips} import tech.beshu.ror.buildinfo.LogPluginBuildInfoMessage -import tech.beshu.ror.configuration.{EnvironmentConfig, EsNodeConfig, ReadonlyRestEsConfig} +import tech.beshu.ror.configuration.{EnvironmentConfig, ReadonlyRestEsConfig} import tech.beshu.ror.constants import tech.beshu.ror.es.actions.rradmin.rest.RestRRAdminAction import tech.beshu.ror.es.actions.rradmin.{RRAdminActionType, TransportRRAdminAction} @@ -103,12 +101,9 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val esNodeConfig = EsNodeConfig( - clusterName = ClusterName.CLUSTER_NAME_SETTING.get(s).value(), - nodeName = Node.NODE_NAME_SETTING.get(s), - ) + private val rorEsConfig = ReadonlyRestEsConfig - .load(EsEnvProvider.create(environment), esNodeConfig) + .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) .runSyncUnsafe(timeout)(Scheduler.global, CanBlock.permit) private val esInitListener = new EsInitListener @@ -120,18 +115,18 @@ class ReadonlyRestPlugin(s: Settings, p: Path) override def createComponents(services: Plugin.PluginServices): util.Collection[_] = { doPrivileged { - val nodeClient = services.client().asInstanceOf[NodeClient] + val client = services.client().asInstanceOf[NodeClient] val repositoriesServiceSupplier = new Supplier[RepositoriesService] { override def get(): RepositoriesService = services.repositoriesService() } ilaf = new IndexLevelActionFilter( - nodeClient.settings().get("node.name"), + EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), - nodeClient, + client, services.threadPool(), services.xContentRegistry(), environment, - new RemoteClusterServiceSupplier(nodeClient), + new RemoteClusterServiceSupplier(client), () => Some(repositoriesServiceSupplier.get()), esInitListener, rorEsConfig From 50062d9513c393e54223c705ca4eb1152e827392 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sun, 25 May 2025 18:33:15 +0200 Subject: [PATCH 16/24] qs --- integration-tests/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/integration-tests/build.gradle b/integration-tests/build.gradle index 68bbb80e41..7f0ccaf945 100644 --- a/integration-tests/build.gradle +++ b/integration-tests/build.gradle @@ -82,7 +82,6 @@ dependencies { testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.3.14' testRuntimeOnly group: 'org.pegdown', name: 'pegdown', version: '1.4.2' testImplementation group: 'org.scala-lang', name: 'scala3-library_3', version: '3.3.3' - testImplementation group: 'org.scalatestplus', name: 'scalacheck-1-16_3', version: '3.2.14.0' testImplementation group: 'org.scalatest', name: 'scalatest_3', version: '3.2.18' } From 72b9af7f1f7f38c71fc2583d84402bc14130e0bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sun, 25 May 2025 18:37:02 +0200 Subject: [PATCH 17/24] qs --- es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala | 1 - gradle.properties | 2 +- 32 files changed, 1 insertion(+), 32 deletions(-) diff --git a/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 2b4cca7a0d..325472bd42 100644 --- a/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -100,7 +100,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 8fed4c089b..ce2097819d 100644 --- a/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -100,7 +100,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 4840ad31b5..ceaa278be3 100644 --- a/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 4840ad31b5..ceaa278be3 100644 --- a/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 4840ad31b5..ceaa278be3 100644 --- a/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 59df57a205..9341703453 100644 --- a/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index a90d01b53b..8a612faa1e 100644 --- a/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 8fed4c089b..ce2097819d 100644 --- a/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -100,7 +100,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index b4137f0d83..8fc738ee6d 100644 --- a/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -100,7 +100,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index c1b40e5ed9..3fbf4e9da4 100644 --- a/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -100,7 +100,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index bd42e357d7..951ccd4490 100644 --- a/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -100,7 +100,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ef8b2ba8bd..66ae6896f9 100644 --- a/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -101,7 +101,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 0d05fe024c..e75578c474 100644 --- a/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 8c3d29541b..cc62499f75 100644 --- a/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 3a738afab6..a37350bf65 100644 --- a/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -107,7 +107,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 1808ac344e..f7116d561b 100644 --- a/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -108,7 +108,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 2edddba82c..90905473dd 100644 --- a/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -100,7 +100,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 1a4f338178..5b26510673 100644 --- a/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -101,7 +101,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 1a4f338178..5b26510673 100644 --- a/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -101,7 +101,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 87c67c225b..734989ecaf 100644 --- a/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 772e5993e9..ae866fe97b 100644 --- a/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 772e5993e9..ae866fe97b 100644 --- a/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 0c5bf0e12b..7493fffc7b 100644 --- a/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 0c5bf0e12b..7493fffc7b 100644 --- a/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 10e12f2697..3863146880 100644 --- a/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -102,7 +102,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 4264bef226..ef99d2488a 100644 --- a/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -103,7 +103,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 1433573d4d..5e9fd154b3 100644 --- a/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -106,7 +106,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 76a7fe8f0a..aabda03e21 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -106,7 +106,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 2bd67b8964..1a8d7fcf3e 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -106,7 +106,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 2bd67b8964..1a8d7fcf3e 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -106,7 +106,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ae05465091..cb60a090f2 100644 --- a/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -101,7 +101,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) private val environment = new Environment(s, p) private val timeout: FiniteDuration = 10 seconds - private val rorEsConfig = ReadonlyRestEsConfig .load(EsEnvProvider.create(environment)) .map(_.fold(e => throw new ElasticsearchException(e.message), identity)) diff --git a/gradle.properties b/gradle.properties index ffa76c4e4c..0390e6676e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ publishedPluginVersion=1.64.2 -pluginVersion=1.65.0-pre3 +pluginVersion=1.65.0-pre2 pluginName=readonlyrest org.gradle.jvmargs=-Xmx6144m From 01cceae69b474bb5b9f5f03fca1d4601774da3a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Fri, 30 May 2025 21:42:08 +0200 Subject: [PATCH 18/24] review changes and fix Scala 2.11 cross compile --- ...ls.scala => AuditEnvironmentContext.scala} | 17 +--- .../beshu/ror/audit/AuditLogSerializer.scala | 3 +- .../DeprecatedAuditLogSerializerAdapter.scala | 5 +- .../instances/DefaultAuditLogSerializer.scala | 81 +-------------- .../DefaultAuditLogSerializerV1.scala | 99 +++++++++++++++++++ .../DefaultAuditLogSerializerV2.scala} | 18 ++-- .../instances/QueryAuditLogSerializer.scala | 7 +- .../accesscontrol/audit/AuditingTool.scala | 76 +++++--------- .../audit/sink/BaseAuditSink.scala | 7 +- .../sink/EsDataStreamBasedAuditSink.scala | 11 ++- .../audit/sink/EsIndexBasedAuditSink.scala | 8 +- .../audit/sink/LogBasedAuditSink.scala | 5 +- .../decoders/AuditingSettingsDecoder.scala | 25 ++--- .../tech/beshu/ror/boot/ReadonlyRest.scala | 17 ++-- .../beshu/ror/configuration/RorConfig.scala | 2 +- .../main/scala/tech/beshu/ror/es/EsEnv.scala | 2 +- .../integration/AuditOutputFormatTests.scala | 13 +-- .../unit/acl/factory/AuditSettingsTests.scala | 4 +- .../unit/acl/logging/AuditingToolTests.scala | 24 +++-- .../unit/boot/ReadonlyRestStartingTests.scala | 7 +- .../beshu/ror/unit/boot/RorIndexTest.scala | 3 +- .../configuration/LoadRawRorConfigTest.scala | 4 +- .../RorBootConfigurationTest.scala | 4 +- .../configuration/SslConfigurationTest.scala | 4 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 7 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../beshu/ror/es/IndexLevelActionFilter.scala | 9 +- .../beshu/ror/es/ReadonlyRestPlugin.scala | 1 - .../beshu/ror/es/utils/EsEnvProvider.scala | 9 +- .../enabled_auditing_tools/readonlyrest.yml | 4 +- .../readonlyrest_audit_index.yml | 2 +- .../LocalClusterAuditingToolsSuite.scala | 2 +- .../RemoteClusterAuditingToolsSuite.scala | 2 +- 121 files changed, 557 insertions(+), 486 deletions(-) rename audit/src/main/scala/tech/beshu/ror/audit/{enrichers/AuditLogSerializerEnrichedWithEsNodeDetails.scala => AuditEnvironmentContext.scala} (60%) create mode 100644 audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV1.scala rename audit/src/main/scala/tech/beshu/ror/audit/{enrichers/AuditLogSerializerEnrichedWithStaticFields.scala => instances/DefaultAuditLogSerializerV2.scala} (60%) diff --git a/audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithEsNodeDetails.scala b/audit/src/main/scala/tech/beshu/ror/audit/AuditEnvironmentContext.scala similarity index 60% rename from audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithEsNodeDetails.scala rename to audit/src/main/scala/tech/beshu/ror/audit/AuditEnvironmentContext.scala index c4b9f4a39a..bc207ea44c 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithEsNodeDetails.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/AuditEnvironmentContext.scala @@ -14,18 +14,7 @@ * You should have received a copy of the GNU General Public License * along with ReadonlyREST. If not, see http://www.gnu.org/licenses/ */ -package tech.beshu.ror.audit.enrichers - -import tech.beshu.ror.audit.AuditLogSerializer - -class AuditLogSerializerEnrichedWithEsNodeDetails(underlying: AuditLogSerializer, - clusterName: String, - nodeName: String) - extends AuditLogSerializerEnrichedWithStaticFields( - underlying, - Map( - "es_cluster_name" -> clusterName, - "es_node_name" -> nodeName, - ) - ) +package tech.beshu.ror.audit +final case class AuditEnvironmentContext(esNodeName: String, + esClusterName: String) diff --git a/audit/src/main/scala/tech/beshu/ror/audit/AuditLogSerializer.scala b/audit/src/main/scala/tech/beshu/ror/audit/AuditLogSerializer.scala index a34df55fb5..58b92506f8 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/AuditLogSerializer.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/AuditLogSerializer.scala @@ -19,5 +19,6 @@ package tech.beshu.ror.audit import org.json.JSONObject trait AuditLogSerializer { - def onResponse(responseContext: AuditResponseContext): Option[JSONObject] + def onResponse(responseContext: AuditResponseContext, + environmentContext: AuditEnvironmentContext): Option[JSONObject] } diff --git a/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala b/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala index b2802b7ee8..a77e02537d 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala @@ -19,7 +19,7 @@ package tech.beshu.ror.audit.adapters import org.json.JSONObject import tech.beshu.ror.audit.AuditResponseContext.{Allowed, Verbosity} import tech.beshu.ror.audit.instances.SerializeUser -import tech.beshu.ror.audit.{AuditLogSerializer, AuditRequestContext, AuditResponseContext} +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditRequestContext, AuditResponseContext} import tech.beshu.ror.commons.ResponseContext.FinalState import tech.beshu.ror.commons.shims.request.RequestContextShim @@ -30,7 +30,8 @@ import scala.collection.JavaConverters._ class DeprecatedAuditLogSerializerAdapter[T](underlying: tech.beshu.ror.requestcontext.AuditLogSerializer[T]) extends AuditLogSerializer { - override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = { + override def onResponse(responseContext: AuditResponseContext, + environmentContext: AuditEnvironmentContext): Option[JSONObject] = { val deprecatedResponseContext = responseContext match { case Allowed(_, verbosity, _) => verbosity match { diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializer.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializer.scala index aed40f9e03..47d6ffbd22 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializer.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializer.scala @@ -16,83 +16,4 @@ */ package tech.beshu.ror.audit.instances -import java.time.ZoneId -import java.time.format.DateTimeFormatter -import org.json.JSONObject -import tech.beshu.ror.audit.AuditResponseContext._ -import tech.beshu.ror.audit.{AuditLogSerializer, AuditRequestContext, AuditResponseContext} - -import scala.collection.JavaConverters._ -import scala.concurrent.duration.FiniteDuration - -class DefaultAuditLogSerializer extends AuditLogSerializer { - - private val timestampFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZone(ZoneId.of("GMT")) - - override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = responseContext match { - case Allowed(requestContext, verbosity, reason) => - verbosity match { - case Verbosity.Info => - Some(createEntry(matched = true, "ALLOWED", reason, responseContext.duration, requestContext, None)) - case Verbosity.Error => - None - } - case ForbiddenBy(requestContext, _, reason) => - Some(createEntry(matched = true, "FORBIDDEN", reason, responseContext.duration, requestContext, None)) - case Forbidden(requestContext) => - Some(createEntry(matched = false, "FORBIDDEN", "default", responseContext.duration, requestContext, None)) - case RequestedIndexNotExist(requestContext) => - Some(createEntry(matched = false, "INDEX NOT EXIST", "Requested index doesn't exist", responseContext.duration, requestContext, None)) - case Errored(requestContext, cause) => - Some(createEntry(matched = false, "ERRORED", "error", responseContext.duration, requestContext, Some(cause))) - } - - private def createEntry(matched: Boolean, - finalState: String, - reason: String, - duration: FiniteDuration, - requestContext: AuditRequestContext, - error: Option[Throwable]) = { - new JSONObject() - .put("match", matched) - .put("block", reason) - .put("id", requestContext.id) - .put("final_state", finalState) - .put("@timestamp", timestampFormatter.format(requestContext.timestamp)) - .put("correlation_id", requestContext.correlationId) - .put("processingMillis", duration.toMillis) - .put("error_type", error.map(_.getClass.getSimpleName).orNull) - .put("error_message", error.map(_.getMessage).orNull) - .put("content_len", requestContext.contentLength) - .put("content_len_kb", requestContext.contentLength / 1024) - .put("type", requestContext.`type`) - .put("origin", requestContext.remoteAddress) - .put("destination", requestContext.localAddress) - .put("xff", requestContext.requestHeaders.getValue("X-Forwarded-For").flatMap(_.headOption).orNull) - .put("task_id", requestContext.taskId) - .put("req_method", requestContext.httpMethod) - .put("headers", requestContext.requestHeaders.names.asJava) - .put("path", requestContext.uriPath) - .put("user", SerializeUser.serialize(requestContext).orNull) - .put("impersonated_by", requestContext.impersonatedByUserName.orNull) - .put("action", requestContext.action) - .put("indices", if (requestContext.involvesIndices) requestContext.indices.toList.asJava else List.empty.asJava) - .put("acl_history", requestContext.history) - .mergeWith(requestContext.generalAuditEvents) - } - - private implicit class JsonObjectOps(val mainJson: JSONObject) { - def mergeWith(secondaryJson: JSONObject): JSONObject = { - jsonKeys(secondaryJson).foldLeft(mainJson) { - case (json, name) if !json.has(name) => - json.put(name, secondaryJson.get(name)) - case (json, _) => - json - } - } - - private def jsonKeys(json: JSONObject) = { - Option(JSONObject.getNames(json)).toList.flatten - } - } -} +class DefaultAuditLogSerializer extends DefaultAuditLogSerializerV2 diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV1.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV1.scala new file mode 100644 index 0000000000..211d3510d4 --- /dev/null +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV1.scala @@ -0,0 +1,99 @@ +/* + * This file is part of ReadonlyREST. + * + * ReadonlyREST is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * ReadonlyREST is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ReadonlyREST. If not, see http://www.gnu.org/licenses/ + */ +package tech.beshu.ror.audit.instances + +import org.json.JSONObject +import tech.beshu.ror.audit.AuditResponseContext._ +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditRequestContext, AuditResponseContext} + +import java.time.ZoneId +import java.time.format.DateTimeFormatter +import scala.collection.JavaConverters._ +import scala.concurrent.duration.FiniteDuration + +class DefaultAuditLogSerializerV1 extends AuditLogSerializer { + + private val timestampFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZone(ZoneId.of("GMT")) + + override def onResponse(responseContext: AuditResponseContext, + environmentContext: AuditEnvironmentContext): Option[JSONObject] = responseContext match { + case Allowed(requestContext, verbosity, reason) => + verbosity match { + case Verbosity.Info => + Some(createEntry(matched = true, "ALLOWED", reason, responseContext.duration, requestContext, None)) + case Verbosity.Error => + None + } + case ForbiddenBy(requestContext, _, reason) => + Some(createEntry(matched = true, "FORBIDDEN", reason, responseContext.duration, requestContext, None)) + case Forbidden(requestContext) => + Some(createEntry(matched = false, "FORBIDDEN", "default", responseContext.duration, requestContext, None)) + case RequestedIndexNotExist(requestContext) => + Some(createEntry(matched = false, "INDEX NOT EXIST", "Requested index doesn't exist", responseContext.duration, requestContext, None)) + case Errored(requestContext, cause) => + Some(createEntry(matched = false, "ERRORED", "error", responseContext.duration, requestContext, Some(cause))) + } + + private def createEntry(matched: Boolean, + finalState: String, + reason: String, + duration: FiniteDuration, + requestContext: AuditRequestContext, + error: Option[Throwable]) = { + new JSONObject() + .put("match", matched) + .put("block", reason) + .put("id", requestContext.id) + .put("final_state", finalState) + .put("@timestamp", timestampFormatter.format(requestContext.timestamp)) + .put("correlation_id", requestContext.correlationId) + .put("processingMillis", duration.toMillis) + .put("error_type", error.map(_.getClass.getSimpleName).orNull) + .put("error_message", error.map(_.getMessage).orNull) + .put("content_len", requestContext.contentLength) + .put("content_len_kb", requestContext.contentLength / 1024) + .put("type", requestContext.`type`) + .put("origin", requestContext.remoteAddress) + .put("destination", requestContext.localAddress) + .put("xff", requestContext.requestHeaders.getValue("X-Forwarded-For").flatMap(_.headOption).orNull) + .put("task_id", requestContext.taskId) + .put("req_method", requestContext.httpMethod) + .put("headers", requestContext.requestHeaders.names.asJava) + .put("path", requestContext.uriPath) + .put("user", SerializeUser.serialize(requestContext).orNull) + .put("impersonated_by", requestContext.impersonatedByUserName.orNull) + .put("action", requestContext.action) + .put("indices", if (requestContext.involvesIndices) requestContext.indices.toList.asJava else List.empty.asJava) + .put("acl_history", requestContext.history) + .mergeWith(requestContext.generalAuditEvents) + } + + private implicit class JsonObjectOps(val mainJson: JSONObject) { + def mergeWith(secondaryJson: JSONObject): JSONObject = { + jsonKeys(secondaryJson).foldLeft(mainJson) { + case (json, name) if !json.has(name) => + json.put(name, secondaryJson.get(name)) + case (json, _) => + json + } + } + + private def jsonKeys(json: JSONObject) = { + Option(JSONObject.getNames(json)).toList.flatten + } + } +} diff --git a/audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithStaticFields.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV2.scala similarity index 60% rename from audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithStaticFields.scala rename to audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV2.scala index d138e5a371..e81506647b 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/enrichers/AuditLogSerializerEnrichedWithStaticFields.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV2.scala @@ -14,18 +14,20 @@ * You should have received a copy of the GNU General Public License * along with ReadonlyREST. If not, see http://www.gnu.org/licenses/ */ -package tech.beshu.ror.audit.enrichers +package tech.beshu.ror.audit.instances import org.json.JSONObject -import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditResponseContext} -private[audit] class AuditLogSerializerEnrichedWithStaticFields(underlying: AuditLogSerializer, - additionalFields: Map[String, String]) - extends AuditLogSerializer { +class DefaultAuditLogSerializerV2 extends DefaultAuditLogSerializerV1 { - override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = { - underlying.onResponse(responseContext) + override def onResponse(responseContext: AuditResponseContext, + environmentContext: AuditEnvironmentContext): Option[JSONObject] = { + lazy val additionalFields = Map( + "es_node_name" -> environmentContext.esNodeName, + "es_cluster_name" -> environmentContext.esClusterName + ) + super.onResponse(responseContext, environmentContext) .map(additionalFields.foldLeft(_) { case (soFar, (key, value)) => soFar.put(key, value) }) } - } diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala index 5c3493cfd1..567e6339e0 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala @@ -17,12 +17,13 @@ package tech.beshu.ror.audit.instances import org.json.JSONObject -import tech.beshu.ror.audit.AuditResponseContext +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditResponseContext} class QueryAuditLogSerializer extends DefaultAuditLogSerializer { - override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = { - super.onResponse(responseContext) + override def onResponse(responseContext: AuditResponseContext, + environmentContext: AuditEnvironmentContext): Option[JSONObject] = { + super.onResponse(responseContext, environmentContext) .map(_.put("content", responseContext.requestContext.content)) } } \ No newline at end of file diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala index 3f5ecc49f2..b39f723337 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala @@ -22,8 +22,8 @@ import cats.implicits.* import monix.eval.Task import org.apache.logging.log4j.scala.Logging import org.json.JSONObject -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.{Disabled, Enabled} +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink.{Disabled, Enabled} import tech.beshu.ror.accesscontrol.audit.sink.* import tech.beshu.ror.accesscontrol.blocks.Block.{History, Verbosity} import tech.beshu.ror.accesscontrol.blocks.metadata.UserMetadata @@ -31,9 +31,8 @@ import tech.beshu.ror.accesscontrol.blocks.{Block, BlockContext} import tech.beshu.ror.accesscontrol.domain.{AuditCluster, RorAuditDataStream, RorAuditIndexTemplate, RorAuditLoggerName} import tech.beshu.ror.accesscontrol.logging.ResponseContext import tech.beshu.ror.accesscontrol.request.RequestContext -import tech.beshu.ror.audit.enrichers.AuditLogSerializerEnrichedWithEsNodeDetails import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer -import tech.beshu.ror.audit.{AuditLogSerializer, AuditRequestContext, AuditResponseContext} +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditRequestContext, AuditResponseContext} import tech.beshu.ror.es.EsNodeSettings import tech.beshu.ror.implicits.* @@ -143,9 +142,9 @@ final class AuditingTool private(auditSinks: NonEmptyList[BaseAuditSink]) object AuditingTool extends Logging { - final case class Settings(auditSinks: NonEmptyList[Settings.AuditSink]) + final case class AuditSettings(auditSinks: NonEmptyList[AuditSettings.AuditSink]) - object Settings { + object AuditSettings { sealed trait AuditSink @@ -159,47 +158,26 @@ object AuditingTool extends Logging { object Config { final case class EsIndexBasedSink(logSerializer: AuditLogSerializer, rorAuditIndexTemplate: RorAuditIndexTemplate, - auditCluster: AuditCluster, - options: EsIndexBasedSink.Options) extends Config + auditCluster: AuditCluster) extends Config object EsIndexBasedSink { val default: EsIndexBasedSink = EsIndexBasedSink( logSerializer = new DefaultAuditLogSerializer, rorAuditIndexTemplate = RorAuditIndexTemplate.default, auditCluster = AuditCluster.LocalAuditCluster, - options = Options.default, ) - - final case class Options(enableReportingEsNodeDetails: Boolean) - - object Options { - val default: Options = Options( - enableReportingEsNodeDetails = true, - ) - } - } final case class EsDataStreamBasedSink(logSerializer: AuditLogSerializer, rorAuditDataStream: RorAuditDataStream, - auditCluster: AuditCluster, - options: EsDataStreamBasedSink.Options) extends Config + auditCluster: AuditCluster) extends Config object EsDataStreamBasedSink { val default: EsDataStreamBasedSink = EsDataStreamBasedSink( logSerializer = new DefaultAuditLogSerializer, rorAuditDataStream = RorAuditDataStream.default, auditCluster = AuditCluster.LocalAuditCluster, - options = Options.default, ) - - final case class Options(enableReportingEsNodeDetails: Boolean) - - object Options { - val default: Options = Options( - enableReportingEsNodeDetails = true, - ) - } } final case class LogBasedSink(logSerializer: AuditLogSerializer, @@ -217,7 +195,7 @@ object AuditingTool extends Logging { final case class CreationError(message: String) extends AnyVal - def create(settings: Settings, + def create(settings: AuditSettings, esNodeSettings: EsNodeSettings, auditSinkServiceCreator: AuditSinkServiceCreator) (implicit clock: Clock, @@ -238,7 +216,7 @@ object AuditingTool extends Logging { } } - private def createAuditSinks(settings: Settings, + private def createAuditSinks(settings: AuditSettings, esNodeSettings: EsNodeSettings, auditSinkServiceCreator: AuditSinkServiceCreator) (using Clock): Task[ValidatedNel[CreationError, Option[NonEmptyList[SupportedAuditSink]]]] = { @@ -251,17 +229,17 @@ object AuditingTool extends Logging { case creator: DataStreamAndIndexBasedAuditSinkServiceCreator => creator case creator: IndexBasedAuditSinkServiceCreator => creator } - createIndexSink(config, serviceCreator, esNodeSettings).map(_.some.valid) + createIndexSink(config, esNodeSettings, serviceCreator).map(_.some.valid) case Enabled(config: AuditSink.Config.EsDataStreamBasedSink) => auditSinkServiceCreator match { case creator: DataStreamAndIndexBasedAuditSinkServiceCreator => - createDataStreamSink(config, creator, esNodeSettings).map(_.map(_.some)) + createDataStreamSink(config, esNodeSettings, creator).map(_.map(_.some)) case _: IndexBasedAuditSinkServiceCreator => // todo improvement - make this state impossible Task.raiseError(new IllegalStateException("Data stream audit sink is not supported in this version")) } case Enabled(AuditSink.Config.LogBasedSink(serializer, loggerName)) => - Task.delay(new LogBasedAuditSink(serializer, loggerName).some.valid) + Task.delay(new LogBasedAuditSink(serializer, auditEnvironmentContext(esNodeSettings), loggerName).some.valid) case Disabled => Task.pure(None.valid) } @@ -282,42 +260,36 @@ object AuditingTool extends Logging { } private def createIndexSink(config: AuditSink.Config.EsIndexBasedSink, + esNodeSettings: EsNodeSettings, serviceCreator: IndexBasedAuditSinkServiceCreator, - esNodeSettings: EsNodeSettings)(using Clock): Task[SupportedAuditSink] = Task.delay { + )(using Clock): Task[SupportedAuditSink] = Task.delay { val service = serviceCreator.index(config.auditCluster) EsIndexBasedAuditSink( - serializer = decorateSerializer(config.logSerializer, config.options.enableReportingEsNodeDetails, esNodeSettings), + serializer = config.logSerializer, + environmentContext = auditEnvironmentContext(esNodeSettings), indexTemplate = config.rorAuditIndexTemplate, auditSinkService = service ) } private def createDataStreamSink(config: AuditSink.Config.EsDataStreamBasedSink, - serviceCreator: DataStreamAndIndexBasedAuditSinkServiceCreator, - esNodeSettings: EsNodeSettings): Task[Validated[CreationError, SupportedAuditSink]] = + esNodeSettings: EsNodeSettings, + serviceCreator: DataStreamAndIndexBasedAuditSinkServiceCreator): Task[Validated[CreationError, SupportedAuditSink]] = Task.delay(serviceCreator.dataStream(config.auditCluster)) .flatMap { auditSinkService => EsDataStreamBasedAuditSink.create( - decorateSerializer(config.logSerializer, config.options.enableReportingEsNodeDetails, esNodeSettings), + config.logSerializer, + auditEnvironmentContext(esNodeSettings), config.rorAuditDataStream, auditSinkService, config.auditCluster ).map(_.leftMap(error => CreationError(error.message)).toValidated) } - private def decorateSerializer(logSerializer: AuditLogSerializer, - enableReportingEsNodeDetails: Boolean, - esNodeSettings: EsNodeSettings) = { - if (enableReportingEsNodeDetails) { - new AuditLogSerializerEnrichedWithEsNodeDetails( - underlying = logSerializer, - clusterName = esNodeSettings.clusterName, - nodeName = esNodeSettings.nodeName - ) - } else { - logSerializer - } - } + private def auditEnvironmentContext(esNodeSettings: EsNodeSettings) = AuditEnvironmentContext( + esNodeName = esNodeSettings.nodeName, + esClusterName = esNodeSettings.clusterName, + ) private type SupportedAuditSink = EsIndexBasedAuditSink | EsDataStreamBasedAuditSink | LogBasedAuditSink diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/BaseAuditSink.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/BaseAuditSink.scala index a25a34d97c..49c96b3670 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/BaseAuditSink.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/BaseAuditSink.scala @@ -18,9 +18,10 @@ package tech.beshu.ror.accesscontrol.audit.sink import monix.eval.Task import org.json.JSONObject -import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditResponseContext} -private[audit] abstract class BaseAuditSink(auditLogSerializer: AuditLogSerializer) { +private[audit] abstract class BaseAuditSink(auditLogSerializer: AuditLogSerializer, + environmentContext: AuditEnvironmentContext) { final def submit(auditEvent: AuditResponseContext): Task[Unit] = { safeRunSerializer(auditEvent) @@ -35,6 +36,6 @@ private[audit] abstract class BaseAuditSink(auditLogSerializer: AuditLogSerializ protected def submit(event: AuditResponseContext, serializedEvent: JSONObject): Task[Unit] private def safeRunSerializer(context: AuditResponseContext) = { - Task(auditLogSerializer.onResponse(context)) + Task(auditLogSerializer.onResponse(context, environmentContext)) } } diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsDataStreamBasedAuditSink.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsDataStreamBasedAuditSink.scala index ca9e33cedd..111f71075c 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsDataStreamBasedAuditSink.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsDataStreamBasedAuditSink.scala @@ -20,15 +20,16 @@ import cats.data.{EitherT, NonEmptyList} import monix.eval.Task import org.json.JSONObject import tech.beshu.ror.accesscontrol.domain.{AuditCluster, RorAuditDataStream} -import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditResponseContext} import tech.beshu.ror.es.DataStreamBasedAuditSinkService import tech.beshu.ror.implicits.* import tech.beshu.ror.utils.ScalaOps.value private[audit] final class EsDataStreamBasedAuditSink private(serializer: AuditLogSerializer, + environmentContext: AuditEnvironmentContext, rorAuditDataStream: RorAuditDataStream, auditSinkService: DataStreamBasedAuditSinkService) - extends BaseAuditSink(serializer) { + extends BaseAuditSink(serializer, environmentContext) { override protected def submit(event: AuditResponseContext, serializedEvent: JSONObject): Task[Unit] = Task { auditSinkService.submit( @@ -56,12 +57,13 @@ object EsDataStreamBasedAuditSink { } def create(serializer: AuditLogSerializer, + environmentContext: AuditEnvironmentContext, rorAuditDataStream: RorAuditDataStream, auditSinkService: DataStreamBasedAuditSinkService, auditCluster: AuditCluster): Task[Either[CreationError, EsDataStreamBasedAuditSink]] = value { for { _ <- createRorAuditDataStreamIfNotExists(rorAuditDataStream, auditSinkService, auditCluster) - auditSink <- createAuditSink(serializer, rorAuditDataStream, auditSinkService) + auditSink <- createAuditSink(serializer, environmentContext, rorAuditDataStream, auditSinkService) } yield auditSink } @@ -73,10 +75,11 @@ object EsDataStreamBasedAuditSink { } private def createAuditSink(serializer: AuditLogSerializer, + environmentContext: AuditEnvironmentContext, rorAuditDataStream: RorAuditDataStream, auditSinkService: DataStreamBasedAuditSinkService) = { EitherT.right[CreationError](Task.delay( - new EsDataStreamBasedAuditSink(serializer, rorAuditDataStream, auditSinkService) + new EsDataStreamBasedAuditSink(serializer, environmentContext, rorAuditDataStream, auditSinkService) )) } } diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsIndexBasedAuditSink.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsIndexBasedAuditSink.scala index b68003b580..5a9bca814f 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsIndexBasedAuditSink.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsIndexBasedAuditSink.scala @@ -19,16 +19,17 @@ package tech.beshu.ror.accesscontrol.audit.sink import monix.eval.Task import org.json.JSONObject import tech.beshu.ror.accesscontrol.domain.RorAuditIndexTemplate -import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditResponseContext} import tech.beshu.ror.es.IndexBasedAuditSinkService import java.time.Clock private[audit] final class EsIndexBasedAuditSink private(serializer: AuditLogSerializer, + environmentContext: AuditEnvironmentContext, rorAuditIndexTemplate: RorAuditIndexTemplate, auditSinkService: IndexBasedAuditSinkService) (implicit clock: Clock) - extends BaseAuditSink(serializer) { + extends BaseAuditSink(serializer, environmentContext) { override protected def submit(event: AuditResponseContext, serializedEvent: JSONObject): Task[Unit] = Task { auditSinkService.submit( @@ -44,8 +45,9 @@ private[audit] final class EsIndexBasedAuditSink private(serializer: AuditLogSer object EsIndexBasedAuditSink { def apply(serializer: AuditLogSerializer, + environmentContext: AuditEnvironmentContext, indexTemplate: RorAuditIndexTemplate, auditSinkService: IndexBasedAuditSinkService)(implicit clock: Clock): EsIndexBasedAuditSink = { - new EsIndexBasedAuditSink(serializer, indexTemplate, auditSinkService) + new EsIndexBasedAuditSink(serializer, environmentContext, indexTemplate, auditSinkService) } } diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/LogBasedAuditSink.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/LogBasedAuditSink.scala index e6b97b85f4..e885b878d0 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/LogBasedAuditSink.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/LogBasedAuditSink.scala @@ -20,10 +20,11 @@ import monix.eval.Task import org.apache.logging.log4j.{LogManager, Logger} import org.json.JSONObject import tech.beshu.ror.accesscontrol.domain.RorAuditLoggerName -import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditResponseContext} private[audit] final class LogBasedAuditSink(serializer: AuditLogSerializer, - loggerName: RorAuditLoggerName) extends BaseAuditSink(serializer) { + environmentContext: AuditEnvironmentContext, + loggerName: RorAuditLoggerName) extends BaseAuditSink(serializer, environmentContext) { private val logger: Logger = LogManager.getLogger(loggerName.value.value) diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala index c9453fd922..0ff99bf8c9 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala @@ -21,9 +21,9 @@ import io.circe.{Decoder, HCursor} import io.lemonlabs.uri.Uri import org.apache.logging.log4j.scala.Logging import tech.beshu.ror.accesscontrol.audit.AuditingTool -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config.{EsDataStreamBasedSink, EsIndexBasedSink, LogBasedSink} +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink.Config +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink.Config.{EsDataStreamBasedSink, EsIndexBasedSink, LogBasedSink} import tech.beshu.ror.accesscontrol.domain.RorAuditIndexTemplate.CreationError import tech.beshu.ror.accesscontrol.domain.{AuditCluster, RorAuditDataStream, RorAuditIndexTemplate, RorAuditLoggerName} import tech.beshu.ror.accesscontrol.factory.RawRorConfigBasedCoreFactory.CoreCreationError.Reason.Message @@ -42,14 +42,14 @@ import scala.util.{Failure, Success, Try} object AuditingSettingsDecoder extends Logging { - def instance(esVersion: EsVersion): Decoder[Option[AuditingTool.Settings]] = { + def instance(esVersion: EsVersion): Decoder[Option[AuditingTool.AuditSettings]] = { for { auditSettings <- auditSettingsDecoder(esVersion) deprecatedAuditSettings <- DeprecatedAuditSettingsDecoder.instance } yield auditSettings.orElse(deprecatedAuditSettings) } - private def auditSettingsDecoder(esVersion: EsVersion): Decoder[Option[AuditingTool.Settings]] = Decoder.instance { c => + private def auditSettingsDecoder(esVersion: EsVersion): Decoder[Option[AuditingTool.AuditSettings]] = Decoder.instance { c => for { isAuditEnabled <- YamlKeyDecoder[Boolean]( segments = NonEmptyList.of("audit", "enabled"), @@ -84,10 +84,10 @@ object AuditingSettingsDecoder extends Logging { case Some(outputs) => NonEmptyList .fromList(outputs.distinct) - .map(AuditingTool.Settings.apply) + .map(AuditingTool.AuditSettings.apply) .toRight(AuditingSettingsCreationError(Message(s"The audit 'outputs' array cannot be empty"))) case None => - AuditingTool.Settings( + AuditingTool.AuditSettings( NonEmptyList.of(AuditSink.Enabled(EsIndexBasedSink.default)) ).asRight } @@ -131,12 +131,10 @@ object AuditingSettingsDecoder extends Logging { auditIndexTemplate <- c.downField("index_template").as[Option[RorAuditIndexTemplate]] customAuditSerializer <- c.downField("serializer").as[Option[AuditLogSerializer]] remoteAuditCluster <- c.downField("cluster").as[Option[AuditCluster.RemoteAuditCluster]] - enableReportingEsNodeDetails <- c.downField("enable_reporting_es_node_details").as[Option[Boolean]] } yield EsIndexBasedSink( customAuditSerializer.getOrElse(EsIndexBasedSink.default.logSerializer), auditIndexTemplate.getOrElse(EsIndexBasedSink.default.rorAuditIndexTemplate), remoteAuditCluster.getOrElse(EsIndexBasedSink.default.auditCluster), - enableReportingEsNodeDetails.map(EsIndexBasedSink.Options(_)).getOrElse(EsIndexBasedSink.Options.default), ) } @@ -145,12 +143,10 @@ object AuditingSettingsDecoder extends Logging { rorAuditDataStream <- c.downField("data_stream").as[Option[RorAuditDataStream]] customAuditSerializer <- c.downField("serializer").as[Option[AuditLogSerializer]] remoteAuditCluster <- c.downField("cluster").as[Option[AuditCluster.RemoteAuditCluster]] - enableReportingEsNodeDetails <- c.downField("enable_reporting_es_node_details").as[Option[Boolean]] } yield EsDataStreamBasedSink( customAuditSerializer.getOrElse(EsDataStreamBasedSink.default.logSerializer), rorAuditDataStream.getOrElse(EsDataStreamBasedSink.default.rorAuditDataStream), remoteAuditCluster.getOrElse(EsDataStreamBasedSink.default.auditCluster), - enableReportingEsNodeDetails.map(EsDataStreamBasedSink.Options(_)).getOrElse(EsDataStreamBasedSink.Options.default), ) } @@ -289,21 +285,20 @@ object AuditingSettingsDecoder extends Logging { } private object DeprecatedAuditSettingsDecoder { - lazy val instance: Decoder[Option[AuditingTool.Settings]] = Decoder.instance { c => + lazy val instance: Decoder[Option[AuditingTool.AuditSettings]] = Decoder.instance { c => whenEnabled(c) { for { auditIndexTemplate <- decodeOptionalSetting[RorAuditIndexTemplate](c)("index_template", fallbackKey = "audit_index_template") customAuditSerializer <- decodeOptionalSetting[AuditLogSerializer](c)("serializer", fallbackKey = "audit_serializer") remoteAuditCluster <- decodeOptionalSetting[AuditCluster.RemoteAuditCluster](c)("cluster", fallbackKey = "audit_cluster") enableReportingEsNodeDetails <- c.downField("enable_reporting_es_node_details").as[Option[Boolean]] - } yield AuditingTool.Settings( + } yield AuditingTool.AuditSettings( auditSinks = NonEmptyList.one( AuditSink.Enabled( EsIndexBasedSink( logSerializer = customAuditSerializer.getOrElse(EsIndexBasedSink.default.logSerializer), rorAuditIndexTemplate = auditIndexTemplate.getOrElse(EsIndexBasedSink.default.rorAuditIndexTemplate), auditCluster = remoteAuditCluster.getOrElse(EsIndexBasedSink.default.auditCluster), - options = enableReportingEsNodeDetails.map(EsIndexBasedSink.Options(_)).getOrElse(EsIndexBasedSink.Options.default), ) ) ) @@ -311,7 +306,7 @@ object AuditingSettingsDecoder extends Logging { } } - private def whenEnabled(cursor: HCursor)(decoding: => Decoder.Result[AuditingTool.Settings]) = { + private def whenEnabled(cursor: HCursor)(decoding: => Decoder.Result[AuditingTool.AuditSettings]) = { for { isEnabled <- decodeOptionalSetting[Boolean](cursor)("collector", fallbackKey = "audit_collector") result <- if (isEnabled.getOrElse(false)) decoding.map(Some.apply) else Right(None) diff --git a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala index a2632217b7..8840e85fe0 100644 --- a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala +++ b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala @@ -37,7 +37,7 @@ import tech.beshu.ror.configuration.ConfigLoading.{ErrorOr, LoadRorConfig} import tech.beshu.ror.configuration.TestConfigLoading.* import tech.beshu.ror.configuration.index.{IndexConfigManager, IndexTestConfigManager} import tech.beshu.ror.configuration.loader.* -import tech.beshu.ror.es.{EsEnv, EsNodeSettings, IndexJsonContentService} +import tech.beshu.ror.es.{EsEnv, IndexJsonContentService} import tech.beshu.ror.implicits.* import tech.beshu.ror.utils.DurationOps.PositiveFiniteDuration @@ -48,8 +48,7 @@ class ReadonlyRest(coreFactory: CoreFactory, val indexConfigManager: IndexConfigManager, val indexTestConfigManager: IndexTestConfigManager, val authServicesMocksProvider: MutableMocksProviderWithCachePerRequest, - val esEnv: EsEnv, - val esNodeSettings: EsNodeSettings) + val esEnv: EsEnv) (implicit environmentConfig: EnvironmentConfig, scheduler: Scheduler) extends Logging { @@ -237,7 +236,7 @@ class ReadonlyRest(coreFactory: CoreFactory, private def createAuditingTool(core: Core) (implicit loggingContext: LoggingContext): Task[Either[NonEmptyList[CoreCreationError], Option[AuditingTool]]] = { core.rorConfig.auditingSettings - .map(settings => AuditingTool.create(settings, esNodeSettings, auditSinkServiceCreator)(using environmentConfig.clock, loggingContext)) + .map(settings => AuditingTool.create(settings, esEnv.esNodeSettings, auditSinkServiceCreator)(using environmentConfig.clock, loggingContext)) .sequence .map { _.sequence @@ -309,25 +308,23 @@ object ReadonlyRest { def create(indexContentService: IndexJsonContentService, auditSinkServiceCreator: AuditSinkServiceCreator, - env: EsEnv, - esNodeSettings: EsNodeSettings) + env: EsEnv) (implicit scheduler: Scheduler, environmentConfig: EnvironmentConfig): ReadonlyRest = { val coreFactory: CoreFactory = new RawRorConfigBasedCoreFactory(env.esVersion) - create(coreFactory, indexContentService, auditSinkServiceCreator, env, esNodeSettings) + create(coreFactory, indexContentService, auditSinkServiceCreator, env) } def create(coreFactory: CoreFactory, indexContentService: IndexJsonContentService, auditSinkServiceCreator: AuditSinkServiceCreator, - env: EsEnv, - esNodeSettings: EsNodeSettings) + env: EsEnv) (implicit scheduler: Scheduler, environmentConfig: EnvironmentConfig): ReadonlyRest = { val indexConfigManager: IndexConfigManager = new IndexConfigManager(indexContentService) val indexTestConfigManager: IndexTestConfigManager = new IndexTestConfigManager(indexContentService) val mocksProvider = new MutableMocksProviderWithCachePerRequest(AuthServicesMocks.empty) - new ReadonlyRest(coreFactory, auditSinkServiceCreator, indexConfigManager, indexTestConfigManager, mocksProvider, env, esNodeSettings) + new ReadonlyRest(coreFactory, auditSinkServiceCreator, indexConfigManager, indexTestConfigManager, mocksProvider, env) } } \ No newline at end of file diff --git a/core/src/main/scala/tech/beshu/ror/configuration/RorConfig.scala b/core/src/main/scala/tech/beshu/ror/configuration/RorConfig.scala index 469a5898dd..9117db6ebe 100644 --- a/core/src/main/scala/tech/beshu/ror/configuration/RorConfig.scala +++ b/core/src/main/scala/tech/beshu/ror/configuration/RorConfig.scala @@ -28,7 +28,7 @@ import scala.annotation.unused final case class RorConfig(services: RorConfig.Services, localUsers: LocalUsers, impersonationWarningsReader: ImpersonationWarningsReader, - auditingSettings: Option[AuditingTool.Settings]) + auditingSettings: Option[AuditingTool.AuditSettings]) object RorConfig { def disabled: RorConfig = RorConfig(RorConfig.Services.empty, LocalUsers.empty, NoOpImpersonationWarningsReader, None) diff --git a/core/src/main/scala/tech/beshu/ror/es/EsEnv.scala b/core/src/main/scala/tech/beshu/ror/es/EsEnv.scala index a17f16a016..1f1729f90a 100644 --- a/core/src/main/scala/tech/beshu/ror/es/EsEnv.scala +++ b/core/src/main/scala/tech/beshu/ror/es/EsEnv.scala @@ -21,7 +21,7 @@ import better.files.File import java.nio.file.Path import scala.util.Try -final case class EsEnv(configPath: Path, modulesPath: Path, esVersion: EsVersion) { +final case class EsEnv(configPath: Path, modulesPath: Path, esVersion: EsVersion, esNodeSettings: EsNodeSettings) { def isOssDistribution: Boolean = { Try { diff --git a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala index 26459c7b86..92f2d3a1ad 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala @@ -23,9 +23,8 @@ import monix.execution.Scheduler.Implicits.global import org.scalamock.scalatest.MockFactory import org.scalatest.matchers.should.Matchers.* import org.scalatest.wordspec.AnyWordSpec -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config.{EsDataStreamBasedSink, EsIndexBasedSink} +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink.Config import tech.beshu.ror.accesscontrol.audit.sink.{AuditDataStreamCreator, DataStreamAndIndexBasedAuditSinkServiceCreator} import tech.beshu.ror.accesscontrol.audit.{AuditingTool, LoggingContext} import tech.beshu.ror.accesscontrol.domain.* @@ -154,19 +153,17 @@ class AuditOutputFormatTests extends AnyWordSpec with BaseYamlLoadedAccessContro private def auditedAcl(indexBasedAuditSinkService: IndexBasedAuditSinkService, dataStreamBasedAuditSinkService: DataStreamBasedAuditSinkService) = { implicit val loggingContext: LoggingContext = LoggingContext(Set.empty) - val settings = AuditingTool.Settings( + val settings = AuditingTool.AuditSettings( NonEmptyList.of( AuditSink.Enabled(Config.EsIndexBasedSink( new DefaultAuditLogSerializer, RorAuditIndexTemplate.default, - AuditCluster.LocalAuditCluster, - EsIndexBasedSink.Options(enableReportingEsNodeDetails = false), + AuditCluster.LocalAuditCluster )), AuditSink.Enabled(Config.EsDataStreamBasedSink( new DefaultAuditLogSerializer, RorAuditDataStream.default, - AuditCluster.LocalAuditCluster, - EsDataStreamBasedSink.Options(enableReportingEsNodeDetails = false), + AuditCluster.LocalAuditCluster )) ) ) diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala index 85e15ae099..58552f31cc 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala @@ -23,8 +23,8 @@ import monix.execution.Scheduler.Implicits.global import org.scalatest.Inside import org.scalatest.matchers.should.Matchers.* import org.scalatest.wordspec.AnyWordSpec -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink.Config import tech.beshu.ror.accesscontrol.blocks.mocks.NoOpMocksProvider import tech.beshu.ror.accesscontrol.domain.AuditCluster.{LocalAuditCluster, RemoteAuditCluster} import tech.beshu.ror.accesscontrol.domain.{AuditCluster, IndexName, RorAuditLoggerName, RorConfigurationIndex} diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala index 81c0a93b1a..6eea5cbe77 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala @@ -26,10 +26,9 @@ import org.scalatest.BeforeAndAfterAll import org.scalatest.matchers.should.Matchers.* import org.scalatest.wordspec.AnyWordSpec import tech.beshu.ror.accesscontrol.audit.AuditingTool -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink.Config.{EsDataStreamBasedSink, EsIndexBasedSink} +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink.Config import tech.beshu.ror.accesscontrol.audit.sink.{AuditDataStreamCreator, DataStreamAndIndexBasedAuditSinkServiceCreator} import tech.beshu.ror.accesscontrol.blocks.Block import tech.beshu.ror.accesscontrol.blocks.Block.{Policy, Verbosity} @@ -42,7 +41,7 @@ import tech.beshu.ror.accesscontrol.orders.* import tech.beshu.ror.accesscontrol.request.RequestContext import tech.beshu.ror.accesscontrol.request.RequestContext.Method import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer -import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditResponseContext} import tech.beshu.ror.es.{DataStreamBasedAuditSinkService, DataStreamService, IndexBasedAuditSinkService} import tech.beshu.ror.mocks.MockRequestContext import tech.beshu.ror.syntax.* @@ -186,7 +185,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "log sink is used" should { "saved audit log to file defined in log4j config" in { val auditingTool = AuditingTool.create( - settings = Settings( + settings = AuditSettings( NonEmptyList.of( AuditSink.Enabled(Config.LogBasedSink( new DefaultAuditLogSerializer, @@ -218,7 +217,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "no enabled outputs in settings" should { "be disabled" in { val creationResult = AuditingTool.create( - settings = Settings(NonEmptyList.of(AuditSink.Disabled, AuditSink.Disabled, AuditSink.Disabled)), + settings = AuditSettings(NonEmptyList.of(AuditSink.Disabled, AuditSink.Disabled, AuditSink.Disabled)), esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mock[DataStreamBasedAuditSinkService] @@ -231,18 +230,16 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter } } - private def auditSettings(serializer: AuditLogSerializer) = Settings(NonEmptyList.of( + private def auditSettings(serializer: AuditLogSerializer) = AuditSettings(NonEmptyList.of( AuditSink.Enabled(Config.EsIndexBasedSink( serializer, RorAuditIndexTemplate.from("'test_'yyyy-MM-dd").toOption.get, - AuditCluster.LocalAuditCluster, - EsIndexBasedSink.Options(enableReportingEsNodeDetails = false), + AuditCluster.LocalAuditCluster )), AuditSink.Enabled(Config.EsDataStreamBasedSink( serializer, RorAuditDataStream.from("test_ds").toOption.get, - AuditCluster.LocalAuditCluster, - EsDataStreamBasedSink.Options(enableReportingEsNodeDetails = false), + AuditCluster.LocalAuditCluster )) )) @@ -266,7 +263,8 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter private implicit val fixedClock: Clock = Clock.fixed(someday.toInstant, someday.getZone) private lazy val throwingAuditLogSerializer = new AuditLogSerializer { - override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = { + override def onResponse(responseContext: AuditResponseContext, + environmentContext: AuditEnvironmentContext): Option[JSONObject] = { throw new IllegalArgumentException("sth went wrong") } } diff --git a/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala b/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala index bed2ffd669..183d2a9c83 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala @@ -32,7 +32,7 @@ import org.scalatest.{EitherValues, Inside, OptionValues} import tech.beshu.ror.accesscontrol.AccessControlList import tech.beshu.ror.accesscontrol.AccessControlList.AccessControlStaticContext import tech.beshu.ror.accesscontrol.audit.AuditingTool -import tech.beshu.ror.accesscontrol.audit.AuditingTool.Settings.AuditSink +import tech.beshu.ror.accesscontrol.audit.AuditingTool.AuditSettings.AuditSink import tech.beshu.ror.accesscontrol.audit.sink.{AuditDataStreamCreator, AuditSinkServiceCreator, DataStreamAndIndexBasedAuditSinkServiceCreator} import tech.beshu.ror.accesscontrol.blocks.definitions.ldap.LdapService import tech.beshu.ror.accesscontrol.blocks.definitions.{ExternalAuthenticationService, ExternalAuthorizationService} @@ -1324,7 +1324,7 @@ class ReadonlyRestStartingTests mock[CoreFactory], "/boot_tests/forced_file_loading_with_audit/readonlyrest.yml", mockEnabledAccessControl, - RorConfig(RorConfig.Services.empty, LocalUsers.empty, NoOpImpersonationWarningsReader, Some(AuditingTool.Settings( + RorConfig(RorConfig.Services.empty, LocalUsers.empty, NoOpImpersonationWarningsReader, Some(AuditingTool.AuditSettings( NonEmptyList.of( AuditSink.Enabled(dataStreamSinkConfig1), AuditSink.Enabled(dataStreamSinkConfig2)) @@ -1423,8 +1423,7 @@ class ReadonlyRestStartingTests factory, indexJsonContentService, auditSinkServiceCreator, - EsEnv(getResourcePath(configPath), getResourcePath(configPath), defaultEsVersionForTests), - testEsNodeSettings, + EsEnv(getResourcePath(configPath), getResourcePath(configPath), defaultEsVersionForTests, testEsNodeSettings), ) } diff --git a/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala b/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala index 7b0e83c931..c13a86dd91 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/boot/RorIndexTest.scala @@ -229,8 +229,7 @@ class RorIndexTest extends AnyWordSpec factory, indexJsonContentService, mock[AuditSinkServiceCreator], - EsEnv(getResourcePath(configPath), getResourcePath(configPath), defaultEsVersionForTests), - testEsNodeSettings, + EsEnv(getResourcePath(configPath), getResourcePath(configPath), defaultEsVersionForTests, testEsNodeSettings), ) } diff --git a/core/src/test/scala/tech/beshu/ror/unit/configuration/LoadRawRorConfigTest.scala b/core/src/test/scala/tech/beshu/ror/unit/configuration/LoadRawRorConfigTest.scala index fb36d185bf..5ca3683d56 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/configuration/LoadRawRorConfigTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/configuration/LoadRawRorConfigTest.scala @@ -27,7 +27,7 @@ import tech.beshu.ror.configuration.loader.LoadedRorConfig.{FileConfig, ForcedFi import tech.beshu.ror.configuration.loader.{LoadRawRorConfig, LoadedRorConfig} import tech.beshu.ror.configuration.{ConfigLoading, RawRorConfig} import tech.beshu.ror.es.EsEnv -import tech.beshu.ror.utils.TestsUtils.{defaultEsVersionForTests, unsafeNes} +import tech.beshu.ror.utils.TestsUtils.{defaultEsVersionForTests, testEsNodeSettings, unsafeNes} import java.nio.file.Paths import scala.language.existentials @@ -103,7 +103,7 @@ class LoadRawRorConfigTest extends AnyWordSpec with EitherValues{ } object LoadRawRorConfigTest { - private val esEnv = EsEnv(Paths.get("unused_file_path"), Paths.get("unused_file_path"), defaultEsVersionForTests) + private val esEnv = EsEnv(Paths.get("unused_file_path"), Paths.get("unused_file_path"), defaultEsVersionForTests, testEsNodeSettings) private val rawRorConfig = RawRorConfig(Json.False, "forced file config") private val rorConfigurationIndex = RorConfigurationIndex(IndexName.Full("rorConfigurationIndex")) diff --git a/core/src/test/scala/tech/beshu/ror/unit/configuration/RorBootConfigurationTest.scala b/core/src/test/scala/tech/beshu/ror/unit/configuration/RorBootConfigurationTest.scala index 2aa71815aa..749096f651 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/configuration/RorBootConfigurationTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/configuration/RorBootConfigurationTest.scala @@ -23,7 +23,7 @@ import org.scalatest.wordspec.AnyWordSpec import tech.beshu.ror.configuration.RorBootConfiguration.{RorFailedToStartResponse, RorNotStartedResponse} import tech.beshu.ror.configuration.{EnvironmentConfig, MalformedSettings, RorBootConfiguration} import tech.beshu.ror.es.EsEnv -import tech.beshu.ror.utils.TestsUtils.{defaultEsVersionForTests, getResourcePath} +import tech.beshu.ror.utils.TestsUtils.{defaultEsVersionForTests, getResourcePath, testEsNodeSettings} class RorBootConfigurationTest extends AnyWordSpec with Inside { @@ -98,6 +98,6 @@ class RorBootConfigurationTest } private def esEnvFrom(configFolderPath: String) = { - EsEnv(getResourcePath(configFolderPath), getResourcePath(configFolderPath), defaultEsVersionForTests) + EsEnv(getResourcePath(configFolderPath), getResourcePath(configFolderPath), defaultEsVersionForTests, testEsNodeSettings) } } diff --git a/core/src/test/scala/tech/beshu/ror/unit/configuration/SslConfigurationTest.scala b/core/src/test/scala/tech/beshu/ror/unit/configuration/SslConfigurationTest.scala index 601ad0bbfd..2c51b924a1 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/configuration/SslConfigurationTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/configuration/SslConfigurationTest.scala @@ -25,7 +25,7 @@ import tech.beshu.ror.configuration.SslConfiguration.ServerCertificateConfigurat import tech.beshu.ror.configuration.{EnvironmentConfig, MalformedSettings, RorSsl} import tech.beshu.ror.es.EsEnv import tech.beshu.ror.utils.TestsPropertiesProvider -import tech.beshu.ror.utils.TestsUtils.{defaultEsVersionForTests, getResourcePath} +import tech.beshu.ror.utils.TestsUtils.{defaultEsVersionForTests, getResourcePath, testEsNodeSettings} class SslConfigurationTest extends AnyWordSpec with Inside { @@ -215,6 +215,6 @@ class SslConfigurationTest } private def esEnvFrom(configFolderPath: String) = { - EsEnv(getResourcePath(configFolderPath), getResourcePath(configFolderPath), defaultEsVersionForTests) + EsEnv(getResourcePath(configFolderPath), getResourcePath(configFolderPath), defaultEsVersionForTests, testEsNodeSettings) } } diff --git a/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index a1eca4c147..0863163669 100644 --- a/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es67x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,8 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, env: Environment, @@ -65,13 +64,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 325472bd42..bada656ff4 100644 --- a/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es67x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -121,7 +121,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) namedWriteableRegistry: NamedWriteableRegistry): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index a1eca4c147..0863163669 100644 --- a/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es70x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,8 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, env: Environment, @@ -65,13 +64,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ce2097819d..fa8ce80730 100644 --- a/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es70x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -121,7 +121,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) namedWriteableRegistry: NamedWriteableRegistry): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 9794afb4d5..f4e632b76a 100644 --- a/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es710x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ceaa278be3..c183bfa8cc 100644 --- a/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es710x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -126,7 +126,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 9794afb4d5..f4e632b76a 100644 --- a/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es711x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ceaa278be3..c183bfa8cc 100644 --- a/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es711x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -126,7 +126,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 9794afb4d5..f4e632b76a 100644 --- a/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es714x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ceaa278be3..c183bfa8cc 100644 --- a/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es714x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -126,7 +126,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 37f3bff61a..752e1d000a 100644 --- a/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es716x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 9341703453..a60e1a1943 100644 --- a/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es716x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -126,7 +126,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 37f3bff61a..752e1d000a 100644 --- a/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es717x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 8a612faa1e..11770476cd 100644 --- a/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es717x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -126,7 +126,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index a1eca4c147..0863163669 100644 --- a/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es72x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,8 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, env: Environment, @@ -65,13 +64,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ce2097819d..fa8ce80730 100644 --- a/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es72x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -121,7 +121,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) namedWriteableRegistry: NamedWriteableRegistry): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index a1eca4c147..0863163669 100644 --- a/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es73x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,8 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, env: Environment, @@ -65,13 +64,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 8fc738ee6d..9cf7f3301e 100644 --- a/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es73x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -121,7 +121,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) namedWriteableRegistry: NamedWriteableRegistry): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index a1eca4c147..0863163669 100644 --- a/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es74x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,8 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, env: Environment, @@ -65,13 +64,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 3fbf4e9da4..1222869380 100644 --- a/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es74x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -121,7 +121,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) namedWriteableRegistry: NamedWriteableRegistry): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index c4145fba4a..af09a1afb9 100644 --- a/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es77x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,8 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, env: Environment, @@ -65,13 +64,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 951ccd4490..13f361be70 100644 --- a/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es77x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -122,7 +122,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) indexNameExpressionResolver: IndexNameExpressionResolver): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 24711f186a..5f8173f38a 100644 --- a/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es78x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -48,8 +48,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, env: Environment, @@ -65,13 +64,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 66ae6896f9..73b4f50400 100644 --- a/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es78x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -124,7 +124,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 9794afb4d5..f4e632b76a 100644 --- a/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es79x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index e75578c474..8ec043bc16 100644 --- a/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es79x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -126,7 +126,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 37f3bff61a..752e1d000a 100644 --- a/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es80x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index cc62499f75..b29555233a 100644 --- a/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es80x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -126,7 +126,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es810x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index a37350bf65..c4d03c11b9 100644 --- a/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es810x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -134,7 +134,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) indicesService: IndicesService): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es811x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index f7116d561b..02840ae20b 100644 --- a/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es811x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -135,7 +135,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) indicesService: IndicesService): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es812x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 90905473dd..836fb4cc7d 100644 --- a/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es812x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -116,7 +116,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) val client = services.client() val repositoriesServiceSupplier = services.repositoriesServiceSupplier() ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), client.asInstanceOf[NodeClient], services.threadPool(), diff --git a/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es813x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 5b26510673..d93ddc133b 100644 --- a/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es813x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -117,7 +117,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) val client = services.client() val repositoriesServiceSupplier = services.repositoriesServiceSupplier() ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), client.asInstanceOf[NodeClient], services.threadPool(), diff --git a/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es814x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 5b26510673..d93ddc133b 100644 --- a/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es814x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -117,7 +117,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) val client = services.client() val repositoriesServiceSupplier = services.repositoriesServiceSupplier() ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), client.asInstanceOf[NodeClient], services.threadPool(), diff --git a/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es815x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 734989ecaf..e9fbb34088 100644 --- a/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es815x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -120,7 +120,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) override def get(): RepositoriesService = services.repositoriesService() } ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), client, services.threadPool(), diff --git a/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 01af14e4d7..a7c3f466a7 100644 --- a/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es816x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ae866fe97b..b50adedf30 100644 --- a/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es816x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -120,7 +120,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) override def get(): RepositoriesService = services.repositoriesService() } ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), client, services.threadPool(), diff --git a/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es818x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ae866fe97b..b50adedf30 100644 --- a/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es818x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -120,7 +120,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) override def get(): RepositoriesService = services.repositoriesService() } ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), client, services.threadPool(), diff --git a/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index d4b158ef42..8b967ce12f 100644 --- a/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configDir(), modulesPath = environment.modulesDir(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 0633620e00..d3c55af42a 100644 --- a/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es81x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 7493fffc7b..6971f11c35 100644 --- a/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es81x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -126,7 +126,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 0633620e00..d3c55af42a 100644 --- a/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es82x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 7493fffc7b..6971f11c35 100644 --- a/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es82x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -126,7 +126,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 0633620e00..d3c55af42a 100644 --- a/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es83x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 3863146880..88e01341dc 100644 --- a/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es83x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -126,7 +126,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) repositoriesServiceSupplier: Supplier[RepositoriesService]): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index 0633620e00..d3c55af42a 100644 --- a/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es84x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index ef99d2488a..7a4a37e4e3 100644 --- a/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es84x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -128,7 +128,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) tracer: Tracer): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es85x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 5e9fd154b3..b177dba85c 100644 --- a/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es85x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -132,7 +132,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) allocationDeciders: AllocationDeciders): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index aabda03e21..2234c1e8c5 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -132,7 +132,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) allocationService: AllocationService): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 1a8d7fcf3e..fc6454f8b7 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -132,7 +132,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) allocationService: AllocationService): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 92ab663245..5ac92387f2 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index fdeaffa4f9..33ee52a46e 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index 1a8d7fcf3e..fc6454f8b7 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -132,7 +132,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) allocationService: AllocationService): util.Collection[AnyRef] = { doPrivileged { ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), clusterService, client.asInstanceOf[NodeClient], threadPool, diff --git a/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index eb346fa0e9..5ac92387f2 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configFile(), modulesPath = environment.modulesFile(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala b/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala index e58bbd3490..9535570ede 100644 --- a/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala +++ b/es90x/src/main/scala/tech/beshu/ror/es/IndexLevelActionFilter.scala @@ -49,8 +49,7 @@ import tech.beshu.ror.utils.{JavaConverters, RorInstanceSupplier} import java.util.function.Supplier -class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, - clusterService: ClusterService, +class IndexLevelActionFilter(clusterService: ClusterService, client: NodeClient, threadPool: ThreadPool, xContentRegistry: NamedXContentRegistry, @@ -67,13 +66,13 @@ class IndexLevelActionFilter(esNodeSettings: EsNodeSettings, private val rorNotAvailableRequestHandler: RorNotAvailableRequestHandler = new RorNotAvailableRequestHandler(rorEsConfig.bootConfig) - private val nodeName = esNodeSettings.nodeName + private val esEnv = EsEnvProvider.create(env) + private val nodeName = esEnv.esNodeSettings.nodeName private val ror = ReadonlyRest.create( new EsIndexJsonContentService(client), auditSinkServiceCreator, - EsEnvProvider.create(env), - esNodeSettings, + esEnv, ) private val rorInstanceState: Atomic[RorInstanceStartingState] = diff --git a/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala b/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala index cb60a090f2..cebe4a12fe 100644 --- a/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala +++ b/es90x/src/main/scala/tech/beshu/ror/es/ReadonlyRestPlugin.scala @@ -119,7 +119,6 @@ class ReadonlyRestPlugin(s: Settings, p: Path) override def get(): RepositoriesService = services.repositoriesService() } ilaf = new IndexLevelActionFilter( - EsNodeSettings(client.settings().get("node.name"), client.settings().get("cluster.name")), services.clusterService(), client, services.threadPool(), diff --git a/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index d4b158ef42..8b967ce12f 100644 --- a/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -18,14 +18,19 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version import org.elasticsearch.env.Environment -import tech.beshu.ror.es.{EsEnv, EsVersion} +import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { def create(environment: Environment): EsEnv = { + val settings = environment.settings() EsEnv( configPath = environment.configDir(), modulesPath = environment.modulesDir(), - esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision) + esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), + esNodeSettings = EsNodeSettings( + nodeName = settings.get("node.name"), + clusterName = settings.get("cluster.name") + ), ) } } diff --git a/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest.yml b/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest.yml index d5fd1cdd01..e413c7174d 100644 --- a/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest.yml +++ b/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest.yml @@ -5,10 +5,10 @@ readonlyrest: outputs: - type: index index_template: "'audit_index'" - enable_reporting_es_node_details: false + serializer: "tech.beshu.ror.audit.instances.DefaultAuditLogSerializerV1" - type: data_stream data_stream: "audit_data_stream" - enable_reporting_es_node_details: false + serializer: "tech.beshu.ror.audit.instances.DefaultAuditLogSerializerV1" access_control_rules: diff --git a/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest_audit_index.yml b/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest_audit_index.yml index af6899d334..b9dd7d0084 100644 --- a/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest_audit_index.yml +++ b/integration-tests/src/test/resources/ror_audit/enabled_auditing_tools/readonlyrest_audit_index.yml @@ -5,7 +5,7 @@ readonlyrest: outputs: - type: index index_template: "'audit_index'" - enable_reporting_es_node_details: false + serializer: "tech.beshu.ror.audit.instances.DefaultAuditLogSerializerV1" access_control_rules: diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala index fe2c82ef96..05d053fe4d 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala @@ -49,7 +49,7 @@ class LocalClusterAuditingToolsSuite override protected def baseAuditDataStreamName: Option[String] = Option.when(Version.greaterOrEqualThan(esVersionUsed, 7, 9, 0))("audit_data_stream") - // Adding the ES cluster fields is disabled in the /enabled_auditing_tools/readonlyrest.yml config file (`enable_reporting_es_node_details: false`) + // Adding the ES cluster fields is disabled in the /enabled_auditing_tools/readonlyrest.yml config file (`DefaultAuditLogSerializerV1` is used) override def assertForEveryAuditEntry(entry: JSON): Unit = { entry.obj.get("es_node_name") shouldBe None entry.obj.get("es_cluster_name") shouldBe None diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/RemoteClusterAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/RemoteClusterAuditingToolsSuite.scala index e4ed86934f..143b6185d7 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/RemoteClusterAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/RemoteClusterAuditingToolsSuite.scala @@ -63,7 +63,7 @@ class RemoteClusterAuditingToolsSuite override protected def baseAuditDataStreamName: Option[String] = Option.when(isDataStreamSupported)("audit_data_stream") - // Adding the ES cluster fields is enabled in the /cluster_auditing_tools/readonlyrest.yml config file (`enable_reporting_es_node_details: true`) + // Adding the ES cluster fields is enabled in the /cluster_auditing_tools/readonlyrest.yml config file (`DefaultAuditLogSerializerV2` is used) override def assertForEveryAuditEntry(entry: JSON): Unit = { entry("es_node_name").str shouldBe "ROR_SINGLE_1" entry("es_cluster_name").str shouldBe "ROR_SINGLE" From 809c1b7cbb8e55df32521e36b472689888a9faf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Sat, 31 May 2025 12:18:58 +0200 Subject: [PATCH 19/24] versioned QueryAuditLogSerializer and fixed unit tests --- .../instances/QueryAuditLogSerializer.scala | 12 +------- .../instances/QueryAuditLogSerializerV1.scala | 29 +++++++++++++++++++ .../instances/QueryAuditLogSerializerV2.scala | 29 +++++++++++++++++++ .../integration/AuditOutputFormatTests.scala | 8 +++-- 4 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV1.scala create mode 100644 audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV2.scala diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala index 567e6339e0..2f43e617a8 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala @@ -16,14 +16,4 @@ */ package tech.beshu.ror.audit.instances -import org.json.JSONObject -import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditResponseContext} - -class QueryAuditLogSerializer extends DefaultAuditLogSerializer { - - override def onResponse(responseContext: AuditResponseContext, - environmentContext: AuditEnvironmentContext): Option[JSONObject] = { - super.onResponse(responseContext, environmentContext) - .map(_.put("content", responseContext.requestContext.content)) - } -} \ No newline at end of file +class QueryAuditLogSerializer extends QueryAuditLogSerializerV2 diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV1.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV1.scala new file mode 100644 index 0000000000..3a65d9a9d0 --- /dev/null +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV1.scala @@ -0,0 +1,29 @@ +/* + * This file is part of ReadonlyREST. + * + * ReadonlyREST is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * ReadonlyREST is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ReadonlyREST. If not, see http://www.gnu.org/licenses/ + */ +package tech.beshu.ror.audit.instances + +import org.json.JSONObject +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditResponseContext} + +class QueryAuditLogSerializerV1 extends DefaultAuditLogSerializerV1 { + + override def onResponse(responseContext: AuditResponseContext, + environmentContext: AuditEnvironmentContext): Option[JSONObject] = { + super.onResponse(responseContext, environmentContext) + .map(_.put("content", responseContext.requestContext.content)) + } +} \ No newline at end of file diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV2.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV2.scala new file mode 100644 index 0000000000..f0701499d8 --- /dev/null +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV2.scala @@ -0,0 +1,29 @@ +/* + * This file is part of ReadonlyREST. + * + * ReadonlyREST is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * ReadonlyREST is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ReadonlyREST. If not, see http://www.gnu.org/licenses/ + */ +package tech.beshu.ror.audit.instances + +import org.json.JSONObject +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditResponseContext} + +class QueryAuditLogSerializerV2 extends DefaultAuditLogSerializerV2 { + + override def onResponse(responseContext: AuditResponseContext, + environmentContext: AuditEnvironmentContext): Option[JSONObject] = { + super.onResponse(responseContext, environmentContext) + .map(_.put("content", responseContext.requestContext.content)) + } +} \ No newline at end of file diff --git a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala index 92f2d3a1ad..20aef7b0c0 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala @@ -92,7 +92,9 @@ class AuditOutputFormatTests extends AnyWordSpec with BaseYamlLoadedAccessContro | "action":"indices:admin/get", | "block":"default", | "id":"mock", - | "content_len":0 + | "content_len":0, + | "es_cluster_name": "testEsCluster", + | "es_node_name": "testEsNode" |}""".stripMargin ) @@ -135,7 +137,9 @@ class AuditOutputFormatTests extends AnyWordSpec with BaseYamlLoadedAccessContro | "action":"indices:admin/get", | "block":"default", | "id":"mock", - | "content_len":0 + | "content_len":0, + | "es_cluster_name": "testEsCluster", + | "es_node_name": "testEsNode" |}""".stripMargin ) From 446d0e45afc965fd98dc30ef36ba0ef9e460c28e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Mon, 16 Jun 2025 21:28:22 +0200 Subject: [PATCH 20/24] qs --- .../beshu/ror/audit/AuditLogSerializer.scala | 3 +- .../DeprecatedAuditLogSerializerAdapter.scala | 3 +- .../instances/DefaultAuditLogSerializer.scala | 4 +- .../DefaultAuditLogSerializerV1.scala | 3 +- .../DefaultAuditLogSerializerV2.scala | 7 ++- .../instances/QueryAuditLogSerializer.scala | 4 +- .../instances/QueryAuditLogSerializerV1.scala | 5 +-- .../instances/QueryAuditLogSerializerV2.scala | 6 +-- .../accesscontrol/audit/AuditingTool.scala | 32 +++++--------- .../audit/sink/BaseAuditSink.scala | 7 ++- .../sink/EsDataStreamBasedAuditSink.scala | 11 ++--- .../audit/sink/EsIndexBasedAuditSink.scala | 8 ++-- .../audit/sink/LogBasedAuditSink.scala | 5 +-- .../RawRorConfigBasedCoreFactory.scala | 11 +++-- .../decoders/AuditingSettingsDecoder.scala | 44 ++++++++++++------- .../tech/beshu/ror/boot/ReadonlyRest.scala | 4 +- .../tech/beshu/ror/es/EsNodeSettings.scala | 2 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- .../beshu/ror/es/utils/EsEnvProvider.scala | 4 +- gradle.properties | 2 +- 49 files changed, 141 insertions(+), 144 deletions(-) diff --git a/audit/src/main/scala/tech/beshu/ror/audit/AuditLogSerializer.scala b/audit/src/main/scala/tech/beshu/ror/audit/AuditLogSerializer.scala index 58b92506f8..a34df55fb5 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/AuditLogSerializer.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/AuditLogSerializer.scala @@ -19,6 +19,5 @@ package tech.beshu.ror.audit import org.json.JSONObject trait AuditLogSerializer { - def onResponse(responseContext: AuditResponseContext, - environmentContext: AuditEnvironmentContext): Option[JSONObject] + def onResponse(responseContext: AuditResponseContext): Option[JSONObject] } diff --git a/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala b/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala index a77e02537d..28d18ca17a 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala @@ -30,8 +30,7 @@ import scala.collection.JavaConverters._ class DeprecatedAuditLogSerializerAdapter[T](underlying: tech.beshu.ror.requestcontext.AuditLogSerializer[T]) extends AuditLogSerializer { - override def onResponse(responseContext: AuditResponseContext, - environmentContext: AuditEnvironmentContext): Option[JSONObject] = { + override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = { val deprecatedResponseContext = responseContext match { case Allowed(_, verbosity, _) => verbosity match { diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializer.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializer.scala index 47d6ffbd22..7a1b070f3d 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializer.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializer.scala @@ -16,4 +16,6 @@ */ package tech.beshu.ror.audit.instances -class DefaultAuditLogSerializer extends DefaultAuditLogSerializerV2 +import tech.beshu.ror.audit.AuditEnvironmentContext + +class DefaultAuditLogSerializer(environmentContext: AuditEnvironmentContext) extends DefaultAuditLogSerializerV2(environmentContext) diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV1.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV1.scala index 211d3510d4..e4ce90b76e 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV1.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV1.scala @@ -29,8 +29,7 @@ class DefaultAuditLogSerializerV1 extends AuditLogSerializer { private val timestampFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZone(ZoneId.of("GMT")) - override def onResponse(responseContext: AuditResponseContext, - environmentContext: AuditEnvironmentContext): Option[JSONObject] = responseContext match { + override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = responseContext match { case Allowed(requestContext, verbosity, reason) => verbosity match { case Verbosity.Info => diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV2.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV2.scala index e81506647b..9772b5e6ee 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV2.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/DefaultAuditLogSerializerV2.scala @@ -19,15 +19,14 @@ package tech.beshu.ror.audit.instances import org.json.JSONObject import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditResponseContext} -class DefaultAuditLogSerializerV2 extends DefaultAuditLogSerializerV1 { +class DefaultAuditLogSerializerV2(environmentContext: AuditEnvironmentContext) extends DefaultAuditLogSerializerV1 { - override def onResponse(responseContext: AuditResponseContext, - environmentContext: AuditEnvironmentContext): Option[JSONObject] = { + override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = { lazy val additionalFields = Map( "es_node_name" -> environmentContext.esNodeName, "es_cluster_name" -> environmentContext.esClusterName ) - super.onResponse(responseContext, environmentContext) + super.onResponse(responseContext) .map(additionalFields.foldLeft(_) { case (soFar, (key, value)) => soFar.put(key, value) }) } } diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala index 2f43e617a8..86dc1e4dea 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializer.scala @@ -16,4 +16,6 @@ */ package tech.beshu.ror.audit.instances -class QueryAuditLogSerializer extends QueryAuditLogSerializerV2 +import tech.beshu.ror.audit.AuditEnvironmentContext + +class QueryAuditLogSerializer(environmentContext: AuditEnvironmentContext) extends QueryAuditLogSerializerV2(environmentContext) diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV1.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV1.scala index 3a65d9a9d0..f52b05a0d2 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV1.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV1.scala @@ -21,9 +21,8 @@ import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditResponseContext} class QueryAuditLogSerializerV1 extends DefaultAuditLogSerializerV1 { - override def onResponse(responseContext: AuditResponseContext, - environmentContext: AuditEnvironmentContext): Option[JSONObject] = { - super.onResponse(responseContext, environmentContext) + override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = { + super.onResponse(responseContext) .map(_.put("content", responseContext.requestContext.content)) } } \ No newline at end of file diff --git a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV2.scala b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV2.scala index f0701499d8..4ca4c538d0 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV2.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/instances/QueryAuditLogSerializerV2.scala @@ -19,11 +19,11 @@ package tech.beshu.ror.audit.instances import org.json.JSONObject import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditResponseContext} -class QueryAuditLogSerializerV2 extends DefaultAuditLogSerializerV2 { +class QueryAuditLogSerializerV2(environmentContext: AuditEnvironmentContext) extends DefaultAuditLogSerializerV2(environmentContext) { override def onResponse(responseContext: AuditResponseContext, - environmentContext: AuditEnvironmentContext): Option[JSONObject] = { - super.onResponse(responseContext, environmentContext) + ): Option[JSONObject] = { + super.onResponse(responseContext) .map(_.put("content", responseContext.requestContext.content)) } } \ No newline at end of file diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala index b39f723337..e3ac017992 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/AuditingTool.scala @@ -33,7 +33,6 @@ import tech.beshu.ror.accesscontrol.logging.ResponseContext import tech.beshu.ror.accesscontrol.request.RequestContext import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditRequestContext, AuditResponseContext} -import tech.beshu.ror.es.EsNodeSettings import tech.beshu.ror.implicits.* import java.time.Clock @@ -161,8 +160,8 @@ object AuditingTool extends Logging { auditCluster: AuditCluster) extends Config object EsIndexBasedSink { - val default: EsIndexBasedSink = EsIndexBasedSink( - logSerializer = new DefaultAuditLogSerializer, + def default(implicit auditEnvironmentContext: AuditEnvironmentContext): EsIndexBasedSink = EsIndexBasedSink( + logSerializer = new DefaultAuditLogSerializer(auditEnvironmentContext), rorAuditIndexTemplate = RorAuditIndexTemplate.default, auditCluster = AuditCluster.LocalAuditCluster, ) @@ -173,8 +172,8 @@ object AuditingTool extends Logging { auditCluster: AuditCluster) extends Config object EsDataStreamBasedSink { - val default: EsDataStreamBasedSink = EsDataStreamBasedSink( - logSerializer = new DefaultAuditLogSerializer, + def default(implicit auditEnvironmentContext: AuditEnvironmentContext): EsDataStreamBasedSink = EsDataStreamBasedSink( + logSerializer = new DefaultAuditLogSerializer(auditEnvironmentContext), rorAuditDataStream = RorAuditDataStream.default, auditCluster = AuditCluster.LocalAuditCluster, ) @@ -184,8 +183,8 @@ object AuditingTool extends Logging { loggerName: RorAuditLoggerName) extends Config object LogBasedSink { - val default: LogBasedSink = LogBasedSink( - logSerializer = new DefaultAuditLogSerializer, + def default(implicit auditEnvironmentContext: AuditEnvironmentContext): LogBasedSink = LogBasedSink( + logSerializer = new DefaultAuditLogSerializer(auditEnvironmentContext), loggerName = RorAuditLoggerName.default ) } @@ -196,11 +195,10 @@ object AuditingTool extends Logging { final case class CreationError(message: String) extends AnyVal def create(settings: AuditSettings, - esNodeSettings: EsNodeSettings, auditSinkServiceCreator: AuditSinkServiceCreator) (implicit clock: Clock, loggingContext: LoggingContext): Task[Either[NonEmptyList[CreationError], Option[AuditingTool]]] = { - createAuditSinks(settings, esNodeSettings, auditSinkServiceCreator).map { + createAuditSinks(settings, auditSinkServiceCreator).map { _.map { case Some(auditSinks) => logger.info(s"The audit is enabled with the given outputs: [${auditSinks.toList.show}]") @@ -217,7 +215,6 @@ object AuditingTool extends Logging { } private def createAuditSinks(settings: AuditSettings, - esNodeSettings: EsNodeSettings, auditSinkServiceCreator: AuditSinkServiceCreator) (using Clock): Task[ValidatedNel[CreationError, Option[NonEmptyList[SupportedAuditSink]]]] = { settings @@ -229,17 +226,17 @@ object AuditingTool extends Logging { case creator: DataStreamAndIndexBasedAuditSinkServiceCreator => creator case creator: IndexBasedAuditSinkServiceCreator => creator } - createIndexSink(config, esNodeSettings, serviceCreator).map(_.some.valid) + createIndexSink(config, serviceCreator).map(_.some.valid) case Enabled(config: AuditSink.Config.EsDataStreamBasedSink) => auditSinkServiceCreator match { case creator: DataStreamAndIndexBasedAuditSinkServiceCreator => - createDataStreamSink(config, esNodeSettings, creator).map(_.map(_.some)) + createDataStreamSink(config, creator).map(_.map(_.some)) case _: IndexBasedAuditSinkServiceCreator => // todo improvement - make this state impossible Task.raiseError(new IllegalStateException("Data stream audit sink is not supported in this version")) } case Enabled(AuditSink.Config.LogBasedSink(serializer, loggerName)) => - Task.delay(new LogBasedAuditSink(serializer, auditEnvironmentContext(esNodeSettings), loggerName).some.valid) + Task.delay(new LogBasedAuditSink(serializer, loggerName).some.valid) case Disabled => Task.pure(None.valid) } @@ -260,37 +257,28 @@ object AuditingTool extends Logging { } private def createIndexSink(config: AuditSink.Config.EsIndexBasedSink, - esNodeSettings: EsNodeSettings, serviceCreator: IndexBasedAuditSinkServiceCreator, )(using Clock): Task[SupportedAuditSink] = Task.delay { val service = serviceCreator.index(config.auditCluster) EsIndexBasedAuditSink( serializer = config.logSerializer, - environmentContext = auditEnvironmentContext(esNodeSettings), indexTemplate = config.rorAuditIndexTemplate, auditSinkService = service ) } private def createDataStreamSink(config: AuditSink.Config.EsDataStreamBasedSink, - esNodeSettings: EsNodeSettings, serviceCreator: DataStreamAndIndexBasedAuditSinkServiceCreator): Task[Validated[CreationError, SupportedAuditSink]] = Task.delay(serviceCreator.dataStream(config.auditCluster)) .flatMap { auditSinkService => EsDataStreamBasedAuditSink.create( config.logSerializer, - auditEnvironmentContext(esNodeSettings), config.rorAuditDataStream, auditSinkService, config.auditCluster ).map(_.leftMap(error => CreationError(error.message)).toValidated) } - private def auditEnvironmentContext(esNodeSettings: EsNodeSettings) = AuditEnvironmentContext( - esNodeName = esNodeSettings.nodeName, - esClusterName = esNodeSettings.clusterName, - ) - private type SupportedAuditSink = EsIndexBasedAuditSink | EsDataStreamBasedAuditSink | LogBasedAuditSink private given Show[SupportedAuditSink] = Show.show { diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/BaseAuditSink.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/BaseAuditSink.scala index 49c96b3670..a25a34d97c 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/BaseAuditSink.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/BaseAuditSink.scala @@ -18,10 +18,9 @@ package tech.beshu.ror.accesscontrol.audit.sink import monix.eval.Task import org.json.JSONObject -import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} -private[audit] abstract class BaseAuditSink(auditLogSerializer: AuditLogSerializer, - environmentContext: AuditEnvironmentContext) { +private[audit] abstract class BaseAuditSink(auditLogSerializer: AuditLogSerializer) { final def submit(auditEvent: AuditResponseContext): Task[Unit] = { safeRunSerializer(auditEvent) @@ -36,6 +35,6 @@ private[audit] abstract class BaseAuditSink(auditLogSerializer: AuditLogSerializ protected def submit(event: AuditResponseContext, serializedEvent: JSONObject): Task[Unit] private def safeRunSerializer(context: AuditResponseContext) = { - Task(auditLogSerializer.onResponse(context, environmentContext)) + Task(auditLogSerializer.onResponse(context)) } } diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsDataStreamBasedAuditSink.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsDataStreamBasedAuditSink.scala index 111f71075c..ca9e33cedd 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsDataStreamBasedAuditSink.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsDataStreamBasedAuditSink.scala @@ -20,16 +20,15 @@ import cats.data.{EitherT, NonEmptyList} import monix.eval.Task import org.json.JSONObject import tech.beshu.ror.accesscontrol.domain.{AuditCluster, RorAuditDataStream} -import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} import tech.beshu.ror.es.DataStreamBasedAuditSinkService import tech.beshu.ror.implicits.* import tech.beshu.ror.utils.ScalaOps.value private[audit] final class EsDataStreamBasedAuditSink private(serializer: AuditLogSerializer, - environmentContext: AuditEnvironmentContext, rorAuditDataStream: RorAuditDataStream, auditSinkService: DataStreamBasedAuditSinkService) - extends BaseAuditSink(serializer, environmentContext) { + extends BaseAuditSink(serializer) { override protected def submit(event: AuditResponseContext, serializedEvent: JSONObject): Task[Unit] = Task { auditSinkService.submit( @@ -57,13 +56,12 @@ object EsDataStreamBasedAuditSink { } def create(serializer: AuditLogSerializer, - environmentContext: AuditEnvironmentContext, rorAuditDataStream: RorAuditDataStream, auditSinkService: DataStreamBasedAuditSinkService, auditCluster: AuditCluster): Task[Either[CreationError, EsDataStreamBasedAuditSink]] = value { for { _ <- createRorAuditDataStreamIfNotExists(rorAuditDataStream, auditSinkService, auditCluster) - auditSink <- createAuditSink(serializer, environmentContext, rorAuditDataStream, auditSinkService) + auditSink <- createAuditSink(serializer, rorAuditDataStream, auditSinkService) } yield auditSink } @@ -75,11 +73,10 @@ object EsDataStreamBasedAuditSink { } private def createAuditSink(serializer: AuditLogSerializer, - environmentContext: AuditEnvironmentContext, rorAuditDataStream: RorAuditDataStream, auditSinkService: DataStreamBasedAuditSinkService) = { EitherT.right[CreationError](Task.delay( - new EsDataStreamBasedAuditSink(serializer, environmentContext, rorAuditDataStream, auditSinkService) + new EsDataStreamBasedAuditSink(serializer, rorAuditDataStream, auditSinkService) )) } } diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsIndexBasedAuditSink.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsIndexBasedAuditSink.scala index 5a9bca814f..b68003b580 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsIndexBasedAuditSink.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/EsIndexBasedAuditSink.scala @@ -19,17 +19,16 @@ package tech.beshu.ror.accesscontrol.audit.sink import monix.eval.Task import org.json.JSONObject import tech.beshu.ror.accesscontrol.domain.RorAuditIndexTemplate -import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} import tech.beshu.ror.es.IndexBasedAuditSinkService import java.time.Clock private[audit] final class EsIndexBasedAuditSink private(serializer: AuditLogSerializer, - environmentContext: AuditEnvironmentContext, rorAuditIndexTemplate: RorAuditIndexTemplate, auditSinkService: IndexBasedAuditSinkService) (implicit clock: Clock) - extends BaseAuditSink(serializer, environmentContext) { + extends BaseAuditSink(serializer) { override protected def submit(event: AuditResponseContext, serializedEvent: JSONObject): Task[Unit] = Task { auditSinkService.submit( @@ -45,9 +44,8 @@ private[audit] final class EsIndexBasedAuditSink private(serializer: AuditLogSer object EsIndexBasedAuditSink { def apply(serializer: AuditLogSerializer, - environmentContext: AuditEnvironmentContext, indexTemplate: RorAuditIndexTemplate, auditSinkService: IndexBasedAuditSinkService)(implicit clock: Clock): EsIndexBasedAuditSink = { - new EsIndexBasedAuditSink(serializer, environmentContext, indexTemplate, auditSinkService) + new EsIndexBasedAuditSink(serializer, indexTemplate, auditSinkService) } } diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/LogBasedAuditSink.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/LogBasedAuditSink.scala index e885b878d0..e6b97b85f4 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/LogBasedAuditSink.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/audit/sink/LogBasedAuditSink.scala @@ -20,11 +20,10 @@ import monix.eval.Task import org.apache.logging.log4j.{LogManager, Logger} import org.json.JSONObject import tech.beshu.ror.accesscontrol.domain.RorAuditLoggerName -import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} private[audit] final class LogBasedAuditSink(serializer: AuditLogSerializer, - environmentContext: AuditEnvironmentContext, - loggerName: RorAuditLoggerName) extends BaseAuditSink(serializer, environmentContext) { + loggerName: RorAuditLoggerName) extends BaseAuditSink(serializer) { private val logger: Logger = LogManager.getLogger(loggerName.value.value) diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala index 98b63fc471..8a99cf6364 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala @@ -48,9 +48,10 @@ import tech.beshu.ror.accesscontrol.factory.decoders.{AuditingSettingsDecoder, G import tech.beshu.ror.accesscontrol.utils.* import tech.beshu.ror.accesscontrol.utils.CirceOps.* import tech.beshu.ror.accesscontrol.utils.CirceOps.DecoderHelpers.FieldListResult.{FieldListValue, NoField} +import tech.beshu.ror.audit.AuditEnvironmentContext import tech.beshu.ror.configuration.RorConfig.ImpersonationWarningsReader import tech.beshu.ror.configuration.{EnvironmentConfig, RawRorConfig, RorConfig} -import tech.beshu.ror.es.EsVersion +import tech.beshu.ror.es.EsEnv import tech.beshu.ror.implicits.* import tech.beshu.ror.syntax.* import tech.beshu.ror.utils.ScalaOps.* @@ -67,7 +68,7 @@ trait CoreFactory { mocksProvider: MocksProvider): Task[Either[NonEmptyList[CoreCreationError], Core]] } -class RawRorConfigBasedCoreFactory(esVersion: EsVersion) +class RawRorConfigBasedCoreFactory(esEnv: EsEnv) (implicit environmentConfig: EnvironmentConfig) extends CoreFactory with Logging { @@ -317,7 +318,11 @@ class RawRorConfigBasedCoreFactory(esVersion: EsVersion) dynamicVariableTransformationAliases.items.map(_.alias) ) ) - auditingTools <- AsyncDecoderCreator.from(AuditingSettingsDecoder.instance(esVersion)) + auditEnvironmentContext = AuditEnvironmentContext( + esNodeName = esEnv.esNodeSettings.nodeName, + esClusterName = esEnv.esNodeSettings.clusterName + ) + auditingTools <- AsyncDecoderCreator.from(AuditingSettingsDecoder.instance(esEnv.esVersion)(auditEnvironmentContext)) authProxies <- AsyncDecoderCreator.from(ProxyAuthDefinitionsDecoder.instance) authenticationServices <- AsyncDecoderCreator.from(ExternalAuthenticationServicesDecoder.instance(httpClientFactory)) authorizationServices <- AsyncDecoderCreator.from(ExternalAuthorizationServicesDecoder.instance(httpClientFactory)) diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala index 0ff99bf8c9..5bfb2a61b2 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala @@ -31,8 +31,8 @@ import tech.beshu.ror.accesscontrol.factory.RawRorConfigBasedCoreFactory.CoreCre import tech.beshu.ror.accesscontrol.factory.decoders.common.{lemonLabsUriDecoder, nonEmptyStringDecoder} import tech.beshu.ror.accesscontrol.utils.CirceOps.DecodingFailureOps import tech.beshu.ror.accesscontrol.utils.SyncDecoderCreator -import tech.beshu.ror.audit.AuditLogSerializer import tech.beshu.ror.audit.adapters.DeprecatedAuditLogSerializerAdapter +import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer} import tech.beshu.ror.es.EsVersion import tech.beshu.ror.implicits.* import tech.beshu.ror.utils.yaml.YamlKeyDecoder @@ -42,40 +42,42 @@ import scala.util.{Failure, Success, Try} object AuditingSettingsDecoder extends Logging { - def instance(esVersion: EsVersion): Decoder[Option[AuditingTool.AuditSettings]] = { + def instance(esVersion: EsVersion) + (implicit context: AuditEnvironmentContext): Decoder[Option[AuditingTool.AuditSettings]] = { for { auditSettings <- auditSettingsDecoder(esVersion) deprecatedAuditSettings <- DeprecatedAuditSettingsDecoder.instance } yield auditSettings.orElse(deprecatedAuditSettings) } - private def auditSettingsDecoder(esVersion: EsVersion): Decoder[Option[AuditingTool.AuditSettings]] = Decoder.instance { c => + private def auditSettingsDecoder(esVersion: EsVersion) + (using AuditEnvironmentContext): Decoder[Option[AuditingTool.AuditSettings]] = Decoder.instance { c => for { isAuditEnabled <- YamlKeyDecoder[Boolean]( segments = NonEmptyList.of("audit", "enabled"), default = false ).apply(c) result <- if (isAuditEnabled) { - decodeAuditSettings(using esVersion)(c).map(Some.apply) + decodeAuditSettings(using esVersion, summon[AuditEnvironmentContext])(c).map(Some.apply) } else { Right(None) } } yield result } - private def decodeAuditSettings(using EsVersion) = { - decodeAuditSettingsWith(using auditSinkConfigSimpleDecoder) + private def decodeAuditSettings(using EsVersion, AuditEnvironmentContext) = { + decodeAuditSettingsWith(using auditSinkConfigSimpleDecoder, summon[AuditEnvironmentContext]) .handleErrorWith { error => if (error.aclCreationError.isDefined) { // the schema was valid, but the config not Decoder.failed(error) } else { - decodeAuditSettingsWith(using auditSinkConfigExtendedDecoder) + decodeAuditSettingsWith(using auditSinkConfigExtendedDecoder, summon[AuditEnvironmentContext]) } } } - private def decodeAuditSettingsWith(using Decoder[AuditSink]) = { + private def decodeAuditSettingsWith(using Decoder[AuditSink], AuditEnvironmentContext) = { SyncDecoderCreator .instance { _.downField("audit").downField("outputs").as[Option[List[AuditSink]]] @@ -94,7 +96,7 @@ object AuditingSettingsDecoder extends Logging { .decoder } - private def auditSinkConfigSimpleDecoder(using EsVersion): Decoder[AuditSink] = { + private def auditSinkConfigSimpleDecoder(using EsVersion, AuditEnvironmentContext): Decoder[AuditSink] = { Decoder[AuditSinkType] .emap[AuditSink.Config] { case AuditSinkType.DataStream => @@ -107,7 +109,7 @@ object AuditingSettingsDecoder extends Logging { .map(AuditSink.Enabled.apply) } - private def auditSinkConfigExtendedDecoder(using EsVersion): Decoder[AuditSink] = { + private def auditSinkConfigExtendedDecoder(using EsVersion, AuditEnvironmentContext): Decoder[AuditSink] = { given Decoder[RorAuditLoggerName] = { SyncDecoderCreator .from(nonEmptyStringDecoder) @@ -118,10 +120,10 @@ object AuditingSettingsDecoder extends Logging { given Decoder[LogBasedSink] = Decoder.instance { c => for { - logSerializer <- c.downField("serializer").as[Option[AuditLogSerializer]] + logSerializerCreator <- c.downField("serializer").as[Option[AuditLogSerializer]] loggerName <- c.downField("logger_name").as[Option[RorAuditLoggerName]] } yield LogBasedSink( - logSerializer = logSerializer.getOrElse(LogBasedSink.default.logSerializer), + logSerializer = logSerializerCreator.getOrElse(LogBasedSink.default.logSerializer), loggerName = loggerName.getOrElse(LogBasedSink.default.loggerName) ) } @@ -204,12 +206,23 @@ object AuditingSettingsDecoder extends Logging { .decoder @nowarn("cat=deprecation") - private given Decoder[AuditLogSerializer] = + private given customAuditLogSerializer(using AuditEnvironmentContext): Decoder[AuditLogSerializer] = SyncDecoderCreator .from(Decoder.decodeString) .emapE { fullClassName => + val serializer = Try(Class.forName(fullClassName).getDeclaredConstructor()).map(constructor => constructor.newInstance()) + .orElse { + Try(Class.forName(fullClassName).getConstructor(classOf[AuditEnvironmentContext])) + .map(constructor => constructor.newInstance(summon[AuditEnvironmentContext])) + } + .getOrElse( + throw new IllegalStateException( + s"Class ${Class.forName(fullClassName).getName} is required to have either one (AuditEnvironmentContext) parameter constructor or constructor without parameters" + ) + ) + Try { - Class.forName(fullClassName).getDeclaredConstructor().newInstance() match { + serializer match { case serializer: tech.beshu.ror.audit.AuditLogSerializer => Some(serializer) case serializer: tech.beshu.ror.requestcontext.AuditLogSerializer[_] => @@ -285,13 +298,12 @@ object AuditingSettingsDecoder extends Logging { } private object DeprecatedAuditSettingsDecoder { - lazy val instance: Decoder[Option[AuditingTool.AuditSettings]] = Decoder.instance { c => + def instance(using AuditEnvironmentContext): Decoder[Option[AuditingTool.AuditSettings]] = Decoder.instance { c => whenEnabled(c) { for { auditIndexTemplate <- decodeOptionalSetting[RorAuditIndexTemplate](c)("index_template", fallbackKey = "audit_index_template") customAuditSerializer <- decodeOptionalSetting[AuditLogSerializer](c)("serializer", fallbackKey = "audit_serializer") remoteAuditCluster <- decodeOptionalSetting[AuditCluster.RemoteAuditCluster](c)("cluster", fallbackKey = "audit_cluster") - enableReportingEsNodeDetails <- c.downField("enable_reporting_es_node_details").as[Option[Boolean]] } yield AuditingTool.AuditSettings( auditSinks = NonEmptyList.one( AuditSink.Enabled( diff --git a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala index 8840e85fe0..36076b263b 100644 --- a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala +++ b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala @@ -236,7 +236,7 @@ class ReadonlyRest(coreFactory: CoreFactory, private def createAuditingTool(core: Core) (implicit loggingContext: LoggingContext): Task[Either[NonEmptyList[CoreCreationError], Option[AuditingTool]]] = { core.rorConfig.auditingSettings - .map(settings => AuditingTool.create(settings, esEnv.esNodeSettings, auditSinkServiceCreator)(using environmentConfig.clock, loggingContext)) + .map(settings => AuditingTool.create(settings, auditSinkServiceCreator)(using environmentConfig.clock, loggingContext)) .sequence .map { _.sequence @@ -311,7 +311,7 @@ object ReadonlyRest { env: EsEnv) (implicit scheduler: Scheduler, environmentConfig: EnvironmentConfig): ReadonlyRest = { - val coreFactory: CoreFactory = new RawRorConfigBasedCoreFactory(env.esVersion) + val coreFactory: CoreFactory = new RawRorConfigBasedCoreFactory(env) create(coreFactory, indexContentService, auditSinkServiceCreator, env) } diff --git a/core/src/main/scala/tech/beshu/ror/es/EsNodeSettings.scala b/core/src/main/scala/tech/beshu/ror/es/EsNodeSettings.scala index 01dd05f0e6..ad6ec330a4 100644 --- a/core/src/main/scala/tech/beshu/ror/es/EsNodeSettings.scala +++ b/core/src/main/scala/tech/beshu/ror/es/EsNodeSettings.scala @@ -16,4 +16,4 @@ */ package tech.beshu.ror.es -case class EsNodeSettings(nodeName: String, clusterName: String) +final case class EsNodeSettings(nodeName: String, clusterName: String) diff --git a/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 8b967ce12f..84f4b397f4 100644 --- a/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesDir(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 5ac92387f2..2f974c155d 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 8b967ce12f..84f4b397f4 100644 --- a/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -28,8 +28,8 @@ object EsEnvProvider { modulesPath = environment.modulesDir(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name"), - clusterName = settings.get("cluster.name") + nodeName = settings.get("node.name", "elasticsearch"), + clusterName = settings.get("cluster.name", "elasticsearch"), ), ) } diff --git a/gradle.properties b/gradle.properties index 0390e6676e..17292ca82a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ publishedPluginVersion=1.64.2 -pluginVersion=1.65.0-pre2 +pluginVersion=1.65.0-pre5 pluginName=readonlyrest org.gradle.jvmargs=-Xmx6144m From 3558efa7e7b9ca1c80d9f45a0842ddabaab9c0fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Wed, 18 Jun 2025 00:32:53 +0200 Subject: [PATCH 21/24] add test --- .../LocalClusterAuditingToolsSuite.scala | 48 ++++++++++++++++++- .../suites/base/BaseAuditingToolsSuite.scala | 4 +- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala index 05d053fe4d..9f1b24a590 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/audit/LocalClusterAuditingToolsSuite.scala @@ -22,9 +22,12 @@ import tech.beshu.ror.integration.utils.SingletonPluginTestSupport import tech.beshu.ror.utils.containers.ElasticsearchNodeDataInitializer import tech.beshu.ror.utils.containers.providers.ClientProvider import tech.beshu.ror.utils.elasticsearch.BaseManager.JSON -import tech.beshu.ror.utils.elasticsearch.ElasticsearchTweetsInitializer +import tech.beshu.ror.utils.elasticsearch.{ElasticsearchTweetsInitializer, IndexManager} +import tech.beshu.ror.utils.misc.Resources.getResourceContent import tech.beshu.ror.utils.misc.Version +import scala.util.{Success, Try} + class LocalClusterAuditingToolsSuite extends BaseAuditingToolsSuite with BaseSingleNodeEsClusterTest @@ -55,4 +58,47 @@ class LocalClusterAuditingToolsSuite entry.obj.get("es_cluster_name") shouldBe None } + "ES" should { + "submit audit entries" when { + "first request uses V1 serializer, then ROR config is reloaded and second request uses V2 serializer" in { + val initialConfig = getResourceContent(rorConfigFileName) + rorApiManager.updateRorInIndexConfig(initialConfig).forceOKStatusOrConfigAlreadyLoaded() + rorApiManager.reloadRorConfig().force() + + val indexManager = new IndexManager(basicAuthClient("username", "dev"), esVersionUsed) + val response = indexManager.getIndex("twitter") + response should have statusCode 200 + + val modifiedConfig = initialConfig.replace("DefaultAuditLogSerializerV1", "DefaultAuditLogSerializerV2") + rorApiManager.updateRorInIndexConfig(modifiedConfig).forceOKStatusOrConfigAlreadyLoaded() + rorApiManager.reloadRorConfig().force() + + val response2 = indexManager.getIndex("twitter") + response2 should have statusCode 200 + + forEachAuditManager { adminAuditManager => + eventually { + val auditEntries = adminAuditManager.getEntries.force().jsons + auditEntries.size shouldBe 2 + + auditEntries.exists(entry => + entry("final_state").str == "ALLOWED" && + entry("user").str == "username" && + entry("block").str.contains("name: 'Rule 1'") && + entry.obj.get("es_node_name").isEmpty && + entry.obj.get("es_cluster_name").isEmpty + ) shouldBe true + + auditEntries.exists(entry => + entry("final_state").str == "ALLOWED" && + entry("user").str == "username" && + entry("block").str.contains("name: 'Rule 1'") && + Try(entry("es_node_name")).map(_.str) == Success("ROR_SINGLE_1") && + Try(entry("es_cluster_name")).map(_.str) == Success("ROR_SINGLE") + ) shouldBe true + } + } + } + } + } } diff --git a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala index 1da161d157..bd9bed414b 100644 --- a/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala +++ b/integration-tests/src/test/scala/tech/beshu/ror/integration/suites/base/BaseAuditingToolsSuite.scala @@ -52,7 +52,7 @@ trait BaseAuditingToolsSuite private lazy val baseAuditIndexName = "audit_index" - private lazy val rorApiManager = new RorApiManager(adminClient, esVersionUsed) + protected lazy val rorApiManager = new RorApiManager(adminClient, esVersionUsed) private lazy val dataStreamManager = new DataStreamManager(destNodeClientProvider.adminClient, esVersionUsed) private lazy val adminAuditManagers = @@ -67,7 +67,7 @@ trait BaseAuditingToolsSuite adminAuditManagers.values.foreach(_.truncate()) } - private def forEachAuditManager[A](test: => AuditIndexManager => A): Unit = + protected def forEachAuditManager[A](test: => AuditIndexManager => A): Unit = adminAuditManagers.foreach { case (indexName, manager) => withClue(s"Error for audit index '$indexName'") { test(manager) From b7e875fa827d7bc00a4ed03d39c2f801e2b259b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Wed, 18 Jun 2025 16:44:51 +0200 Subject: [PATCH 22/24] fix test compilation problems --- .../RawRorConfigBasedCoreFactory.scala | 11 ++++---- .../tech/beshu/ror/boot/ReadonlyRest.scala | 2 +- .../integration/AuditOutputFormatTests.scala | 7 +++-- .../BaseYamlLoadedAccessControlTest.scala | 4 +-- .../unit/acl/factory/AuditSettingsTests.scala | 2 +- .../unit/acl/factory/CoreFactoryTests.scala | 2 +- .../factory/ImpersonationWarningsTests.scala | 2 +- .../ror/unit/acl/factory/LocalUsersTest.scala | 2 +- .../rules/BaseRuleSettingsDecoderTest.scala | 2 +- .../unit/acl/logging/AuditingToolTests.scala | 27 +++++++------------ .../unit/boot/ReadonlyRestStartingTests.scala | 2 +- .../tech/beshu/ror/utils/TestsUtils.scala | 11 +++++++- 12 files changed, 37 insertions(+), 37 deletions(-) diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala index 8a99cf6364..88012aa130 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/RawRorConfigBasedCoreFactory.scala @@ -51,7 +51,7 @@ import tech.beshu.ror.accesscontrol.utils.CirceOps.DecoderHelpers.FieldListResul import tech.beshu.ror.audit.AuditEnvironmentContext import tech.beshu.ror.configuration.RorConfig.ImpersonationWarningsReader import tech.beshu.ror.configuration.{EnvironmentConfig, RawRorConfig, RorConfig} -import tech.beshu.ror.es.EsEnv +import tech.beshu.ror.es.{EsNodeSettings, EsVersion} import tech.beshu.ror.implicits.* import tech.beshu.ror.syntax.* import tech.beshu.ror.utils.ScalaOps.* @@ -68,7 +68,8 @@ trait CoreFactory { mocksProvider: MocksProvider): Task[Either[NonEmptyList[CoreCreationError], Core]] } -class RawRorConfigBasedCoreFactory(esEnv: EsEnv) +class RawRorConfigBasedCoreFactory(esVersion: EsVersion, + esNodeSettings: EsNodeSettings) (implicit environmentConfig: EnvironmentConfig) extends CoreFactory with Logging { @@ -319,10 +320,10 @@ class RawRorConfigBasedCoreFactory(esEnv: EsEnv) ) ) auditEnvironmentContext = AuditEnvironmentContext( - esNodeName = esEnv.esNodeSettings.nodeName, - esClusterName = esEnv.esNodeSettings.clusterName + esNodeName = esNodeSettings.nodeName, + esClusterName = esNodeSettings.clusterName ) - auditingTools <- AsyncDecoderCreator.from(AuditingSettingsDecoder.instance(esEnv.esVersion)(auditEnvironmentContext)) + auditingTools <- AsyncDecoderCreator.from(AuditingSettingsDecoder.instance(esVersion)(auditEnvironmentContext)) authProxies <- AsyncDecoderCreator.from(ProxyAuthDefinitionsDecoder.instance) authenticationServices <- AsyncDecoderCreator.from(ExternalAuthenticationServicesDecoder.instance(httpClientFactory)) authorizationServices <- AsyncDecoderCreator.from(ExternalAuthorizationServicesDecoder.instance(httpClientFactory)) diff --git a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala index 8eb84fdd17..db757d790b 100644 --- a/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala +++ b/core/src/main/scala/tech/beshu/ror/boot/ReadonlyRest.scala @@ -329,7 +329,7 @@ object ReadonlyRest { env: EsEnv) (implicit scheduler: Scheduler, environmentConfig: EnvironmentConfig): ReadonlyRest = { - val coreFactory: CoreFactory = new RawRorConfigBasedCoreFactory(env) + val coreFactory: CoreFactory = new RawRorConfigBasedCoreFactory(env.esVersion, env.esNodeSettings) create(coreFactory, indexContentService, auditSinkServiceCreator, env) } diff --git a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala index 20aef7b0c0..0e01a0ac98 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/AuditOutputFormatTests.scala @@ -33,7 +33,7 @@ import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer import tech.beshu.ror.es.{DataStreamBasedAuditSinkService, DataStreamService, IndexBasedAuditSinkService} import tech.beshu.ror.mocks.MockRequestContext import tech.beshu.ror.syntax.* -import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, header, nes, testEsNodeSettings} +import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, header, nes, testAuditEnvironmentContext} import java.time.{Clock, Instant, ZoneId} import scala.concurrent.duration.* @@ -160,12 +160,12 @@ class AuditOutputFormatTests extends AnyWordSpec with BaseYamlLoadedAccessContro val settings = AuditingTool.AuditSettings( NonEmptyList.of( AuditSink.Enabled(Config.EsIndexBasedSink( - new DefaultAuditLogSerializer, + new DefaultAuditLogSerializer(testAuditEnvironmentContext), RorAuditIndexTemplate.default, AuditCluster.LocalAuditCluster )), AuditSink.Enabled(Config.EsDataStreamBasedSink( - new DefaultAuditLogSerializer, + new DefaultAuditLogSerializer(testAuditEnvironmentContext), RorAuditDataStream.default, AuditCluster.LocalAuditCluster )) @@ -173,7 +173,6 @@ class AuditOutputFormatTests extends AnyWordSpec with BaseYamlLoadedAccessContro ) val auditingTool = AuditingTool.create( settings = settings, - esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamBasedAuditSinkService diff --git a/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala b/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala index 73b770df4a..d72436a940 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/BaseYamlLoadedAccessControlTest.scala @@ -27,7 +27,7 @@ import tech.beshu.ror.configuration.{EnvironmentConfig, RawRorConfig} import tech.beshu.ror.mocks.{MockHttpClientsFactory, MockLdapConnectionPoolProvider} import tech.beshu.ror.providers.* import tech.beshu.ror.utils.TestsPropertiesProvider -import tech.beshu.ror.utils.TestsUtils.{BlockContextAssertion, defaultEsVersionForTests, unsafeNes} +import tech.beshu.ror.utils.TestsUtils.{BlockContextAssertion, defaultEsVersionForTests, testEsNodeSettings, unsafeNes} trait BaseYamlLoadedAccessControlTest extends BlockContextAssertion { @@ -41,7 +41,7 @@ trait BaseYamlLoadedAccessControlTest extends BlockContextAssertion { envVarsProvider = envVarsProvider, propertiesProvider = propertiesProvider ) - private val factory = new RawRorConfigBasedCoreFactory(defaultEsVersionForTests) + private val factory = new RawRorConfigBasedCoreFactory(defaultEsVersionForTests, testEsNodeSettings) protected val ldapConnectionPoolProvider: UnboundidLdapConnectionPoolProvider = MockLdapConnectionPoolProvider protected val httpClientsFactory: HttpClientsFactory = MockHttpClientsFactory protected val mockProvider: MocksProvider = NoOpMocksProvider diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala index 58552f31cc..de4923d001 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditSettingsTests.scala @@ -45,7 +45,7 @@ class AuditSettingsTests extends AnyWordSpec with Inside { private def factory(esVersion: EsVersion = defaultEsVersionForTests) = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory(esVersion) + new RawRorConfigBasedCoreFactory(esVersion, testEsNodeSettings) } private val zonedDateTime = ZonedDateTime.of(2019, 1, 1, 0, 1, 59, 0, ZoneId.of("+1")) diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala index 2982cc6393..1bfd2c5869 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala @@ -40,7 +40,7 @@ class CoreFactoryTests extends AnyWordSpec with Inside with MockFactory { private val factory: CoreFactory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory(defaultEsVersionForTests) + new RawRorConfigBasedCoreFactory(defaultEsVersionForTests, testEsNodeSettings) } "A RorAclFactory" should { diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala index 0c5d7bc7b9..bce32288eb 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/ImpersonationWarningsTests.scala @@ -387,6 +387,6 @@ class ImpersonationWarningsTests extends AnyWordSpec with Inside { private val factory: CoreFactory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory(defaultEsVersionForTests) + new RawRorConfigBasedCoreFactory(defaultEsVersionForTests, testEsNodeSettings) } } diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala index a02b11634b..c44813f69f 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/LocalUsersTest.scala @@ -319,7 +319,7 @@ class LocalUsersTest extends AnyWordSpec with Inside { private val factory = { implicit val environmentConfig: EnvironmentConfig = EnvironmentConfig.default - new RawRorConfigBasedCoreFactory(defaultEsVersionForTests) + new RawRorConfigBasedCoreFactory(defaultEsVersionForTests, testEsNodeSettings) } } diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala index c2332d1965..4751f42ce2 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/rules/BaseRuleSettingsDecoderTest.scala @@ -50,7 +50,7 @@ abstract class BaseRuleSettingsDecoderTest[T <: Rule : ClassTag] extends AnyWord protected def factory: RawRorConfigBasedCoreFactory = { implicit val environmentConfig: EnvironmentConfig = new EnvironmentConfig(envVarsProvider = envVarsProvider) - new RawRorConfigBasedCoreFactory(defaultEsVersionForTests) + new RawRorConfigBasedCoreFactory(defaultEsVersionForTests, testEsNodeSettings) } def assertDecodingSuccess(yaml: String, diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala index 6eea5cbe77..43bd90d959 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala @@ -41,11 +41,11 @@ import tech.beshu.ror.accesscontrol.orders.* import tech.beshu.ror.accesscontrol.request.RequestContext import tech.beshu.ror.accesscontrol.request.RequestContext.Method import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer -import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} import tech.beshu.ror.es.{DataStreamBasedAuditSinkService, DataStreamService, IndexBasedAuditSinkService} import tech.beshu.ror.mocks.MockRequestContext import tech.beshu.ror.syntax.* -import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, fullIndexName, nes, testEsNodeSettings, unsafeNes} +import tech.beshu.ror.utils.TestsUtils.{fullDataStreamName, fullIndexName, nes, testAuditEnvironmentContext, unsafeNes} import java.time.* import java.util.UUID @@ -62,8 +62,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "not submit any audit entry" when { "request was allowed and verbosity level was ERROR" in { val auditingTool = AuditingTool.create( - settings = auditSettings(new DefaultAuditLogSerializer), - esNodeSettings = testEsNodeSettings, + settings = auditSettings(new DefaultAuditLogSerializer(testAuditEnvironmentContext)), auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mockedDataStreamBasedAuditSinkService @@ -76,7 +75,6 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "custom serializer throws exception" in { val auditingTool = AuditingTool.create( settings = auditSettings(throwingAuditLogSerializer), - esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mockedDataStreamBasedAuditSinkService @@ -97,8 +95,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter (dataStreamAuditSink.submit _).expects(fullDataStreamName("test_ds"), "mock-1", *).returning(()) val auditingTool = AuditingTool.create( - settings = auditSettings(new DefaultAuditLogSerializer), - esNodeSettings = testEsNodeSettings, + settings = auditSettings(new DefaultAuditLogSerializer(testAuditEnvironmentContext)), auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -114,8 +111,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter (dataStreamAuditSink.submit _).expects(fullDataStreamName("test_ds"), "mock-1", *).returning(()) val auditingTool = AuditingTool.create( - settings = auditSettings(new DefaultAuditLogSerializer), - esNodeSettings = testEsNodeSettings, + settings = auditSettings(new DefaultAuditLogSerializer(testAuditEnvironmentContext)), auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -145,8 +141,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter (dataStreamAuditSink.submit _).expects(fullDataStreamName("test_ds"), "mock-1", *).returning(()) val auditingTool = AuditingTool.create( - settings = auditSettings(new DefaultAuditLogSerializer), - esNodeSettings = testEsNodeSettings, + settings = auditSettings(new DefaultAuditLogSerializer(testAuditEnvironmentContext)), auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -166,8 +161,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter (dataStreamAuditSink.submit _).expects(fullDataStreamName("test_ds"), "mock-1", *).returning(()) val auditingTool = AuditingTool.create( - settings = auditSettings(new DefaultAuditLogSerializer), - esNodeSettings = testEsNodeSettings, + settings = auditSettings(new DefaultAuditLogSerializer(testAuditEnvironmentContext)), auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = dataStreamAuditSink @@ -188,12 +182,11 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter settings = AuditSettings( NonEmptyList.of( AuditSink.Enabled(Config.LogBasedSink( - new DefaultAuditLogSerializer, + new DefaultAuditLogSerializer(testAuditEnvironmentContext), RorAuditLoggerName.default )) ) ), - esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mock[DataStreamBasedAuditSinkService] @@ -218,7 +211,6 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter "be disabled" in { val creationResult = AuditingTool.create( settings = AuditSettings(NonEmptyList.of(AuditSink.Disabled, AuditSink.Disabled, AuditSink.Disabled)), - esNodeSettings = testEsNodeSettings, auditSinkServiceCreator = new DataStreamAndIndexBasedAuditSinkServiceCreator { override def dataStream(cluster: AuditCluster): DataStreamBasedAuditSinkService = mock[DataStreamBasedAuditSinkService] @@ -263,8 +255,7 @@ class AuditingToolTests extends AnyWordSpec with MockFactory with BeforeAndAfter private implicit val fixedClock: Clock = Clock.fixed(someday.toInstant, someday.getZone) private lazy val throwingAuditLogSerializer = new AuditLogSerializer { - override def onResponse(responseContext: AuditResponseContext, - environmentContext: AuditEnvironmentContext): Option[JSONObject] = { + override def onResponse(responseContext: AuditResponseContext): Option[JSONObject] = { throw new IllegalArgumentException("sth went wrong") } } diff --git a/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala b/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala index 8a84192d6e..2b588070f2 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/boot/ReadonlyRestStartingTests.scala @@ -1315,7 +1315,7 @@ class ReadonlyRestStartingTests val mockedIndexJsonContentManager = mock[IndexJsonContentService] mockIndexJsonContentManagerSourceOfCallTestConfig(mockedIndexJsonContentManager) - val dataStreamSinkConfig1 = AuditSink.Config.EsDataStreamBasedSink.default + val dataStreamSinkConfig1 = AuditSink.Config.EsDataStreamBasedSink.default(testAuditEnvironmentContext) val dataStreamSinkConfig2 = dataStreamSinkConfig1.copy( auditCluster = AuditCluster.RemoteAuditCluster(NonEmptyList.one(Uri.parse("0.0.0.0"))) ) diff --git a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala index f5d4945c9e..a5b4088432 100644 --- a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala +++ b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala @@ -50,6 +50,7 @@ import tech.beshu.ror.accesscontrol.domain.GroupIdLike.GroupId import tech.beshu.ror.accesscontrol.domain.Header.Name import tech.beshu.ror.accesscontrol.domain.KibanaApp.KibanaAppRegex import tech.beshu.ror.accesscontrol.domain.User.UserIdPattern +import tech.beshu.ror.audit.AuditEnvironmentContext import tech.beshu.ror.configuration.RawRorConfig import tech.beshu.ror.es.{EsNodeSettings, EsVersion} import tech.beshu.ror.syntax.* @@ -403,7 +404,15 @@ object TestsUtils { File(getResourcePath(resource)).contentAsString } - def testEsNodeSettings: EsNodeSettings = EsNodeSettings(clusterName = "testEsCluster", nodeName = "testEsNode") + def testEsNodeSettings: EsNodeSettings = EsNodeSettings( + clusterName = "testEsCluster", + nodeName = "testEsNode" + ) + + def testAuditEnvironmentContext: AuditEnvironmentContext = AuditEnvironmentContext( + esNodeName = testEsNodeSettings.clusterName, + esClusterName = testEsNodeSettings.nodeName + ) implicit class ValueOrIllegalState[ERROR, SUCCESS](private val eitherT: EitherT[Task, ERROR, SUCCESS]) extends AnyVal { From 8e02b87ad997f0299e43fc72d4821fa6373c50df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Wed, 18 Jun 2025 17:08:55 +0200 Subject: [PATCH 23/24] qs --- .../DeprecatedAuditLogSerializerAdapter.scala | 2 +- .../decoders/AuditingSettingsDecoder.scala | 18 +++++++++--------- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- .../beshu/ror/es/utils/EsEnvProvider.scala | 6 ++++-- gradle.properties | 2 +- 34 files changed, 135 insertions(+), 73 deletions(-) diff --git a/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala b/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala index 28d18ca17a..b2802b7ee8 100644 --- a/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala +++ b/audit/src/main/scala/tech/beshu/ror/audit/adapters/DeprecatedAuditLogSerializerAdapter.scala @@ -19,7 +19,7 @@ package tech.beshu.ror.audit.adapters import org.json.JSONObject import tech.beshu.ror.audit.AuditResponseContext.{Allowed, Verbosity} import tech.beshu.ror.audit.instances.SerializeUser -import tech.beshu.ror.audit.{AuditEnvironmentContext, AuditLogSerializer, AuditRequestContext, AuditResponseContext} +import tech.beshu.ror.audit.{AuditLogSerializer, AuditRequestContext, AuditResponseContext} import tech.beshu.ror.commons.ResponseContext.FinalState import tech.beshu.ror.commons.shims.request.RequestContextShim diff --git a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala index 5bfb2a61b2..7f67214ebc 100644 --- a/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala +++ b/core/src/main/scala/tech/beshu/ror/accesscontrol/factory/decoders/AuditingSettingsDecoder.scala @@ -210,16 +210,16 @@ object AuditingSettingsDecoder extends Logging { SyncDecoderCreator .from(Decoder.decodeString) .emapE { fullClassName => - val serializer = Try(Class.forName(fullClassName).getDeclaredConstructor()).map(constructor => constructor.newInstance()) - .orElse { - Try(Class.forName(fullClassName).getConstructor(classOf[AuditEnvironmentContext])) - .map(constructor => constructor.newInstance(summon[AuditEnvironmentContext])) - } - .getOrElse( - throw new IllegalStateException( - s"Class ${Class.forName(fullClassName).getName} is required to have either one (AuditEnvironmentContext) parameter constructor or constructor without parameters" + val clazz = Class.forName(fullClassName) + val serializer = + Try(clazz.getConstructor(classOf[AuditEnvironmentContext])) + .map(_.newInstance(summon[AuditEnvironmentContext])) + .orElse(Try(clazz.getDeclaredConstructor()).map(_.newInstance())) + .getOrElse( + throw new IllegalStateException( + s"Class ${Class.forName(fullClassName).getName} is required to have either one (AuditEnvironmentContext) parameter constructor or constructor without parameters" + ) ) - ) Try { serializer match { diff --git a/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es67x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es70x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es710x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es711x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es714x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es716x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es717x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es72x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es73x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es74x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es77x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es78x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es79x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es80x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es810x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es811x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es812x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es813x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es814x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es815x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es816x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 84f4b397f4..6b7344e3ae 100644 --- a/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es818x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesDir(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es81x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es82x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es83x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es84x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es85x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es87x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es88x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 2f974c155d..f01429df0c 100644 --- a/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es89x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesFile(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala b/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala index 84f4b397f4..6b7344e3ae 100644 --- a/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala +++ b/es90x/src/main/scala/tech/beshu/ror/es/utils/EsEnvProvider.scala @@ -17,7 +17,9 @@ package tech.beshu.ror.es.utils import org.elasticsearch.Version +import org.elasticsearch.cluster.ClusterName import org.elasticsearch.env.Environment +import org.elasticsearch.node.Node import tech.beshu.ror.es.{EsEnv, EsNodeSettings, EsVersion} object EsEnvProvider { @@ -28,8 +30,8 @@ object EsEnvProvider { modulesPath = environment.modulesDir(), esVersion = EsVersion(major = Version.CURRENT.major, minor = Version.CURRENT.minor, revision = Version.CURRENT.revision), esNodeSettings = EsNodeSettings( - nodeName = settings.get("node.name", "elasticsearch"), - clusterName = settings.get("cluster.name", "elasticsearch"), + nodeName = Node.NODE_NAME_SETTING.get(settings), + clusterName = ClusterName.CLUSTER_NAME_SETTING.get(settings).value(), ), ) } diff --git a/gradle.properties b/gradle.properties index 17292ca82a..fe5a195e32 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ publishedPluginVersion=1.64.2 -pluginVersion=1.65.0-pre5 +pluginVersion=1.65.0-pre6 pluginName=readonlyrest org.gradle.jvmargs=-Xmx6144m From 80998ed5802a1af36361c951d5a14552800a74cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Wed, 18 Jun 2025 17:32:52 +0200 Subject: [PATCH 24/24] qs --- core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala index a5b4088432..054903e363 100644 --- a/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala +++ b/core/src/test/scala/tech/beshu/ror/utils/TestsUtils.scala @@ -410,8 +410,8 @@ object TestsUtils { ) def testAuditEnvironmentContext: AuditEnvironmentContext = AuditEnvironmentContext( - esNodeName = testEsNodeSettings.clusterName, - esClusterName = testEsNodeSettings.nodeName + esNodeName = testEsNodeSettings.nodeName, + esClusterName = testEsNodeSettings.clusterName, ) implicit class ValueOrIllegalState[ERROR, SUCCESS](private val eitherT: EitherT[Task, ERROR, SUCCESS]) extends AnyVal {