diff --git a/src/main/kotlin/org/opensearch/commons/alerting/model/DataSources.kt b/src/main/kotlin/org/opensearch/commons/alerting/model/DataSources.kt index 589f745a..acc9c501 100644 --- a/src/main/kotlin/org/opensearch/commons/alerting/model/DataSources.kt +++ b/src/main/kotlin/org/opensearch/commons/alerting/model/DataSources.kt @@ -18,10 +18,19 @@ data class DataSources( * If index is pre-existing, mapping is updated*/ val findingsIndex: String = ".opensearch-alerting-finding-history-write", // AlertIndices.FINDING_HISTORY_WRITE_INDEX + /** Configures a custom index pattern for findingsIndex alias.*/ + val findingsIndexPattern: String = "<.opensearch-alerting-finding-history-{now/d}-1>", // AlertIndices.FINDING_HISTORY_INDEX_PATTERN + /** Configures a custom index to store alerts for a monitor. Creates a new index if index with given name not present. * If index is pre-existing, mapping is updated. */ val alertsIndex: String = ".opendistro-alerting-alerts", // AlertIndices.ALERT_INDEX + /** Configures a custom index alias to store historic alerts for a monitor.*/ + val alertsHistoryIndex: String = ".opendistro-alerting-alert-history-write", // AlertIndices.ALERT_HISTORY_WRITE_INDEX + + /** Configures a custom index pattern for alertHistoryIndex alias.*/ + val alertsHistoryIndexPattern: String = "<.opendistro-alerting-alert-history-{now/d}-1>", // AlertIndices.ALERT_HISTORY_INDEX_PATTERN + /** Configures custom mappings by field type for query index. * Custom query index mappings are configurable, only if a custom query index is configured too. */ val queryIndexMappingsByType: Map> = mapOf() @@ -58,7 +67,10 @@ data class DataSources( constructor(sin: StreamInput) : this( queryIndex = sin.readString(), findingsIndex = sin.readString(), + findingsIndexPattern = sin.readString(), alertsIndex = sin.readString(), + alertsHistoryIndex = sin.readString(), + alertsHistoryIndexPattern = sin.readString(), queryIndexMappingsByType = sin.readMap() as Map> ) @@ -67,7 +79,10 @@ data class DataSources( return mapOf( QUERY_INDEX_FIELD to queryIndex, FINDINGS_INDEX_FIELD to findingsIndex, + FINDINGS_INDEX_PATTERN_FIELD to findingsIndexPattern, ALERTS_INDEX_FIELD to alertsIndex, + ALERTS_HISTORY_INDEX_FIELD to alertsHistoryIndex, + ALERTS_HISTORY_INDEX_PATTERN_FIELD to alertsHistoryIndexPattern, QUERY_INDEX_MAPPINGS_BY_TYPE to queryIndexMappingsByType ) } @@ -76,7 +91,10 @@ data class DataSources( builder.startObject() builder.field(QUERY_INDEX_FIELD, queryIndex) builder.field(FINDINGS_INDEX_FIELD, findingsIndex) + builder.field(FINDINGS_INDEX_PATTERN_FIELD, findingsIndexPattern) builder.field(ALERTS_INDEX_FIELD, alertsIndex) + builder.field(ALERTS_HISTORY_INDEX_FIELD, alertsHistoryIndex) + builder.field(ALERTS_HISTORY_INDEX_PATTERN_FIELD, alertsHistoryIndexPattern) builder.field(QUERY_INDEX_MAPPINGS_BY_TYPE, queryIndexMappingsByType as Map) builder.endObject() return builder @@ -85,7 +103,10 @@ data class DataSources( companion object { const val QUERY_INDEX_FIELD = "query_index" const val FINDINGS_INDEX_FIELD = "findings_index" + const val FINDINGS_INDEX_PATTERN_FIELD = "findings_index_pattern" const val ALERTS_INDEX_FIELD = "alerts_index" + const val ALERTS_HISTORY_INDEX_FIELD = "alerts_history_index" + const val ALERTS_HISTORY_INDEX_PATTERN_FIELD = "alerts_history_index_pattern" const val QUERY_INDEX_MAPPINGS_BY_TYPE = "query_index_mappings_by_type" @JvmStatic @@ -94,7 +115,10 @@ data class DataSources( fun parse(xcp: XContentParser): DataSources { var queryIndex = "" var findingsIndex = "" + var findingsIndexPattern = "" var alertsIndex = "" + var alertsHistoryIndex = "" + var alertsHistoryIndexPattern = "" var queryIndexMappingsByType: Map> = mapOf() XContentParserUtils.ensureExpectedToken(XContentParser.Token.START_OBJECT, xcp.currentToken(), xcp) @@ -105,14 +129,20 @@ data class DataSources( when (fieldName) { QUERY_INDEX_FIELD -> queryIndex = xcp.text() FINDINGS_INDEX_FIELD -> findingsIndex = xcp.text() + FINDINGS_INDEX_PATTERN_FIELD -> findingsIndexPattern = xcp.text() ALERTS_INDEX_FIELD -> alertsIndex = xcp.text() + ALERTS_HISTORY_INDEX_FIELD -> alertsHistoryIndex = xcp.text() + ALERTS_HISTORY_INDEX_PATTERN_FIELD -> alertsHistoryIndexPattern = xcp.text() QUERY_INDEX_MAPPINGS_BY_TYPE -> queryIndexMappingsByType = xcp.map() as Map> } } return DataSources( queryIndex = queryIndex, findingsIndex = findingsIndex, + findingsIndexPattern = findingsIndexPattern, alertsIndex = alertsIndex, + alertsHistoryIndex = alertsHistoryIndex, + alertsHistoryIndexPattern = alertsHistoryIndexPattern, queryIndexMappingsByType = queryIndexMappingsByType ) } @@ -122,7 +152,10 @@ data class DataSources( override fun writeTo(out: StreamOutput) { out.writeString(queryIndex) out.writeString(findingsIndex) + out.writeString(findingsIndexPattern) out.writeString(alertsIndex) + out.writeString(alertsHistoryIndex) + out.writeString(alertsHistoryIndexPattern) out.writeMap(queryIndexMappingsByType as Map) } }