Skip to content
This repository was archived by the owner on Aug 2, 2022. It is now read-only.

Commit 625c97c

Browse files
authored
Adds usage of destination host deny list to the error notification an… (#410)
* Adds usage of destination host deny list to the error notification and notification action in ISM
1 parent 91a457d commit 625c97c

File tree

23 files changed

+132
-9
lines changed

23 files changed

+132
-9
lines changed

build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,9 @@ dependencies {
130130
compile "org.jetbrains.kotlin:kotlin-stdlib-common:${kotlin_version}"
131131
compile 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7'
132132
compile "org.jetbrains:annotations:13.0"
133-
compile "com.amazon.opendistroforelasticsearch:notification:${opendistroVersion}.0"
133+
compile "com.amazon.opendistroforelasticsearch:notification:1.13.1.0"
134134
compile "com.amazon.opendistroforelasticsearch:common-utils:${opendistroVersion}.0"
135+
compile "com.github.seancfoley:ipaddress:5.3.3"
135136

136137
testCompile "org.elasticsearch.test:framework:${es_version}"
137138
testCompile "org.jetbrains.kotlin:kotlin-test:${kotlin_version}"
@@ -175,6 +176,7 @@ afterEvaluate {
175176
def firstPlugin = plugins.get(0)
176177
plugins.remove(0)
177178
plugins.add(firstPlugin)
179+
178180
if (securityEnabled) {
179181
node.extraConfigFile("kirk.pem", file("src/test/resources/security/kirk.pem"))
180182
node.extraConfigFile("kirk-key.pem", file("src/test/resources/security/kirk-key.pem"))

src/main/kotlin/com/amazon/opendistroforelasticsearch/indexmanagement/indexstatemanagement/ManagedIndexRunner.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ object ManagedIndexRunner : ScheduledJobRunner,
123123
private val errorNotificationRetryPolicy = BackoffPolicy.exponentialBackoff(TimeValue.timeValueMillis(250), 3)
124124
private var jobInterval: Int = DEFAULT_JOB_INTERVAL
125125
private var allowList: List<String> = ALLOW_LIST_NONE
126+
private var hostDenyList: List<String> = emptyList()
126127

127128
fun registerClusterService(clusterService: ClusterService): ManagedIndexRunner {
128129
this.clusterService = clusterService
@@ -165,6 +166,8 @@ object ManagedIndexRunner : ScheduledJobRunner,
165166
clusterService.clusterSettings.addSettingsUpdateConsumer(ALLOW_LIST) {
166167
allowList = it
167168
}
169+
170+
hostDenyList = settings.getAsList(ManagedIndexSettings.HOST_DENY_LIST)
168171
return this
169172
}
170173

@@ -225,7 +228,7 @@ object ManagedIndexRunner : ScheduledJobRunner,
225228
}
226229

227230
val state = policy.getStateToExecute(managedIndexMetaData)
228-
val action: Action? = state?.getActionToExecute(clusterService, scriptService, client, managedIndexMetaData)
231+
val action: Action? = state?.getActionToExecute(clusterService, scriptService, client, settings, managedIndexMetaData)
229232
val step: Step? = action?.getStepToExecute()
230233
val currentActionMetaData = action?.getUpdatedActionMetaData(managedIndexMetaData, state)
231234

@@ -651,7 +654,7 @@ object ManagedIndexRunner : ScheduledJobRunner,
651654
policy.errorNotification?.run {
652655
errorNotificationRetryPolicy.retry(logger) {
653656
withContext(Dispatchers.IO) {
654-
destination.publish(null, compileTemplate(messageTemplate, managedIndexMetaData))
657+
destination.publish(null, compileTemplate(messageTemplate, managedIndexMetaData), hostDenyList)
655658
}
656659
}
657660
}

src/main/kotlin/com/amazon/opendistroforelasticsearch/indexmanagement/indexstatemanagement/action/NotificationAction.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,19 @@ import com.amazon.opendistroforelasticsearch.indexmanagement.indexstatemanagemen
2222
import com.amazon.opendistroforelasticsearch.indexmanagement.indexstatemanagement.step.notification.AttemptNotificationStep
2323
import org.elasticsearch.client.Client
2424
import org.elasticsearch.cluster.service.ClusterService
25+
import org.elasticsearch.common.settings.Settings
2526
import org.elasticsearch.script.ScriptService
2627

2728
class NotificationAction(
2829
clusterService: ClusterService,
2930
scriptService: ScriptService,
3031
client: Client,
32+
settings: Settings,
3133
managedIndexMetaData: ManagedIndexMetaData,
3234
config: NotificationActionConfig
3335
) : Action(ActionConfig.ActionType.NOTIFICATION, config, managedIndexMetaData) {
3436

35-
private val attemptNotificationStep = AttemptNotificationStep(clusterService, scriptService, client, config, managedIndexMetaData)
37+
private val attemptNotificationStep = AttemptNotificationStep(clusterService, scriptService, client, settings, config, managedIndexMetaData)
3638
private val steps = listOf(attemptNotificationStep)
3739

3840
override fun getSteps(): List<Step> = steps

src/main/kotlin/com/amazon/opendistroforelasticsearch/indexmanagement/indexstatemanagement/model/action/ActionConfig.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.elasticsearch.cluster.service.ClusterService
2222
import org.elasticsearch.common.io.stream.StreamInput
2323
import org.elasticsearch.common.io.stream.StreamOutput
2424
import org.elasticsearch.common.io.stream.Writeable
25+
import org.elasticsearch.common.settings.Settings
2526
import org.elasticsearch.common.xcontent.ToXContent
2627
import org.elasticsearch.common.xcontent.ToXContentFragment
2728
import org.elasticsearch.common.xcontent.XContentBuilder
@@ -51,6 +52,7 @@ abstract class ActionConfig(
5152
clusterService: ClusterService,
5253
scriptService: ScriptService,
5354
client: Client,
55+
settings: Settings,
5456
managedIndexMetaData: ManagedIndexMetaData
5557
): Action
5658

src/main/kotlin/com/amazon/opendistroforelasticsearch/indexmanagement/indexstatemanagement/model/action/AllocationActionConfig.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.elasticsearch.client.Client
2222
import org.elasticsearch.cluster.service.ClusterService
2323
import org.elasticsearch.common.io.stream.StreamInput
2424
import org.elasticsearch.common.io.stream.StreamOutput
25+
import org.elasticsearch.common.settings.Settings
2526
import org.elasticsearch.common.xcontent.ToXContent
2627
import org.elasticsearch.common.xcontent.ToXContentObject
2728
import org.elasticsearch.common.xcontent.XContentBuilder
@@ -49,6 +50,7 @@ data class AllocationActionConfig(
4950
clusterService: ClusterService,
5051
scriptService: ScriptService,
5152
client: Client,
53+
settings: Settings,
5254
managedIndexMetaData: ManagedIndexMetaData
5355
): Action = AllocationAction(clusterService, client, managedIndexMetaData, this)
5456

src/main/kotlin/com/amazon/opendistroforelasticsearch/indexmanagement/indexstatemanagement/model/action/CloseActionConfig.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.amazon.opendistroforelasticsearch.indexmanagement.indexstatemanagemen
2020
import com.amazon.opendistroforelasticsearch.indexmanagement.indexstatemanagement.model.ManagedIndexMetaData
2121
import org.elasticsearch.client.Client
2222
import org.elasticsearch.cluster.service.ClusterService
23+
import org.elasticsearch.common.settings.Settings
2324
import org.elasticsearch.common.xcontent.ToXContent
2425
import org.elasticsearch.common.xcontent.ToXContentObject
2526
import org.elasticsearch.common.xcontent.XContentBuilder
@@ -46,6 +47,7 @@ data class CloseActionConfig(
4647
clusterService: ClusterService,
4748
scriptService: ScriptService,
4849
client: Client,
50+
settings: Settings,
4951
managedIndexMetaData: ManagedIndexMetaData
5052
): Action = CloseAction(clusterService, client, managedIndexMetaData, this)
5153

src/main/kotlin/com/amazon/opendistroforelasticsearch/indexmanagement/indexstatemanagement/model/action/DeleteActionConfig.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.amazon.opendistroforelasticsearch.indexmanagement.indexstatemanagemen
2020
import com.amazon.opendistroforelasticsearch.indexmanagement.indexstatemanagement.model.ManagedIndexMetaData
2121
import org.elasticsearch.client.Client
2222
import org.elasticsearch.cluster.service.ClusterService
23+
import org.elasticsearch.common.settings.Settings
2324
import org.elasticsearch.common.xcontent.ToXContent
2425
import org.elasticsearch.common.xcontent.ToXContentObject
2526
import org.elasticsearch.common.xcontent.XContentBuilder
@@ -46,6 +47,7 @@ data class DeleteActionConfig(
4647
clusterService: ClusterService,
4748
scriptService: ScriptService,
4849
client: Client,
50+
settings: Settings,
4951
managedIndexMetaData: ManagedIndexMetaData
5052
): Action = DeleteAction(clusterService, client, managedIndexMetaData, this)
5153

src/main/kotlin/com/amazon/opendistroforelasticsearch/indexmanagement/indexstatemanagement/model/action/ForceMergeActionConfig.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.elasticsearch.client.Client
2222
import org.elasticsearch.cluster.service.ClusterService
2323
import org.elasticsearch.common.io.stream.StreamInput
2424
import org.elasticsearch.common.io.stream.StreamOutput
25+
import org.elasticsearch.common.settings.Settings
2526
import org.elasticsearch.common.xcontent.ToXContent
2627
import org.elasticsearch.common.xcontent.ToXContentObject
2728
import org.elasticsearch.common.xcontent.XContentBuilder
@@ -55,6 +56,7 @@ data class ForceMergeActionConfig(
5556
clusterService: ClusterService,
5657
scriptService: ScriptService,
5758
client: Client,
59+
settings: Settings,
5860
managedIndexMetaData: ManagedIndexMetaData
5961
): Action = ForceMergeAction(clusterService, client, managedIndexMetaData, this)
6062

src/main/kotlin/com/amazon/opendistroforelasticsearch/indexmanagement/indexstatemanagement/model/action/IndexPriorityActionConfig.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.elasticsearch.client.Client
2222
import org.elasticsearch.cluster.service.ClusterService
2323
import org.elasticsearch.common.io.stream.StreamInput
2424
import org.elasticsearch.common.io.stream.StreamOutput
25+
import org.elasticsearch.common.settings.Settings
2526
import org.elasticsearch.common.xcontent.ToXContent
2627
import org.elasticsearch.common.xcontent.ToXContentObject
2728
import org.elasticsearch.common.xcontent.XContentBuilder
@@ -53,6 +54,7 @@ data class IndexPriorityActionConfig(
5354
clusterService: ClusterService,
5455
scriptService: ScriptService,
5556
client: Client,
57+
settings: Settings,
5658
managedIndexMetaData: ManagedIndexMetaData
5759
): Action = IndexPriorityAction(clusterService, client, managedIndexMetaData, this)
5860

src/main/kotlin/com/amazon/opendistroforelasticsearch/indexmanagement/indexstatemanagement/model/action/NotificationActionConfig.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import org.elasticsearch.client.Client
2323
import org.elasticsearch.cluster.service.ClusterService
2424
import org.elasticsearch.common.io.stream.StreamInput
2525
import org.elasticsearch.common.io.stream.StreamOutput
26+
import org.elasticsearch.common.settings.Settings
2627
import org.elasticsearch.common.xcontent.ToXContent
2728
import org.elasticsearch.common.xcontent.ToXContentObject
2829
import org.elasticsearch.common.xcontent.XContentBuilder
@@ -59,8 +60,9 @@ data class NotificationActionConfig(
5960
clusterService: ClusterService,
6061
scriptService: ScriptService,
6162
client: Client,
63+
settings: Settings,
6264
managedIndexMetaData: ManagedIndexMetaData
63-
): Action = NotificationAction(clusterService, scriptService, client, managedIndexMetaData, this)
65+
): Action = NotificationAction(clusterService, scriptService, client, settings, managedIndexMetaData, this)
6466

6567
@Throws(IOException::class)
6668
constructor(sin: StreamInput) : this(

0 commit comments

Comments
 (0)