Skip to content

Commit dcde86c

Browse files
riysaxen-amznjowg-amazon
authored andcommitted
Findings API Enhancements changes and integ tests fix (#1464) (#1474)
* solution to fix integ tests Signed-off-by: Riya Saxena <[email protected]> * fix flaky DocumentMonitor Runner tests Signed-off-by: Riya Saxena <[email protected]> * fix findings API enhancemnts Signed-off-by: Riya Saxena <[email protected]> --------- Signed-off-by: Riya Saxena <[email protected]> (cherry picked from commit ba84d04)
1 parent 45ecab0 commit dcde86c

File tree

2 files changed

+6
-74
lines changed

2 files changed

+6
-74
lines changed

alerting/src/main/kotlin/org/opensearch/alerting/resthandler/RestGetFindingsAction.kt

+1-5
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ class RestGetFindingsAction : BaseRestHandler() {
4545
val size = request.paramAsInt("size", 20)
4646
val startIndex = request.paramAsInt("startIndex", 0)
4747
val searchString = request.param("searchString", "")
48-
val severity: String? = request.param("severity", "ALL")
49-
val detectionType: String? = request.param("detectionType", "rules")
5048

5149
val table = Table(
5250
sortOrder,
@@ -59,9 +57,7 @@ class RestGetFindingsAction : BaseRestHandler() {
5957

6058
val getFindingsSearchRequest = GetFindingsRequest(
6159
findingID,
62-
table,
63-
severity,
64-
detectionType
60+
table
6561
)
6662
return RestChannelConsumer {
6763
channel ->

alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportGetFindingsAction.kt

+5-69
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import org.opensearch.commons.alerting.model.FindingWithDocs
4040
import org.opensearch.commons.utils.recreateObject
4141
import org.opensearch.core.action.ActionListener
4242
import org.opensearch.core.common.Strings
43+
import org.opensearch.core.common.io.stream.NamedWriteableRegistry
4344
import org.opensearch.core.xcontent.NamedXContentRegistry
4445
import org.opensearch.core.xcontent.XContentParser
4546
import org.opensearch.core.xcontent.XContentParserUtils
@@ -62,7 +63,8 @@ class TransportGetFindingsSearchAction @Inject constructor(
6263
clusterService: ClusterService,
6364
actionFilters: ActionFilters,
6465
val settings: Settings,
65-
val xContentRegistry: NamedXContentRegistry
66+
val xContentRegistry: NamedXContentRegistry,
67+
val namedWriteableRegistry: NamedWriteableRegistry
6668
) : HandledTransportAction<ActionRequest, GetFindingsResponse> (
6769
AlertingActions.GET_FINDINGS_ACTION_NAME,
6870
transportService,
@@ -83,11 +85,8 @@ class TransportGetFindingsSearchAction @Inject constructor(
8385
actionListener: ActionListener<GetFindingsResponse>
8486
) {
8587
val getFindingsRequest = request as? GetFindingsRequest
86-
?: recreateObject(request) { GetFindingsRequest(it) }
88+
?: recreateObject(request, namedWriteableRegistry) { GetFindingsRequest(it) }
8789
val tableProp = getFindingsRequest.table
88-
val severity = getFindingsRequest.severity
89-
val detectionType = getFindingsRequest.detectionType
90-
val searchString = tableProp.searchString
9190

9291
val sortBuilder = SortBuilders
9392
.fieldSort(tableProp.sortString)
@@ -104,80 +103,17 @@ class TransportGetFindingsSearchAction @Inject constructor(
104103
.seqNoAndPrimaryTerm(true)
105104
.version(true)
106105

107-
val queryBuilder = QueryBuilders.boolQuery()
106+
val queryBuilder = getFindingsRequest.boolQueryBuilder ?: QueryBuilders.boolQuery()
108107

109108
if (!getFindingsRequest.findingId.isNullOrBlank()) {
110109
queryBuilder.filter(QueryBuilders.termQuery("_id", getFindingsRequest.findingId))
111110
}
112-
113-
if (!getFindingsRequest.findingIds.isNullOrEmpty()) {
114-
queryBuilder.filter(QueryBuilders.termsQuery("id", getFindingsRequest.findingIds))
115-
}
116-
117111
if (getFindingsRequest.monitorId != null) {
118112
queryBuilder.filter(QueryBuilders.termQuery("monitor_id", getFindingsRequest.monitorId))
119113
} else if (getFindingsRequest.monitorIds.isNullOrEmpty() == false) {
120114
queryBuilder.filter(QueryBuilders.termsQuery("monitor_id", getFindingsRequest.monitorIds))
121115
}
122116

123-
if (getFindingsRequest.startTime != null && getFindingsRequest.endTime != null) {
124-
val startTime = getFindingsRequest.startTime!!.toEpochMilli()
125-
val endTime = getFindingsRequest.endTime!!.toEpochMilli()
126-
val timeRangeQuery = QueryBuilders.rangeQuery("timestamp")
127-
.from(startTime) // Greater than or equal to start time
128-
.to(endTime) // Less than or equal to end time
129-
queryBuilder.filter(timeRangeQuery)
130-
}
131-
132-
if (!detectionType.isNullOrBlank()) {
133-
val nestedQueryBuilder = QueryBuilders.nestedQuery(
134-
"queries",
135-
when {
136-
detectionType.equals("threat", ignoreCase = true) -> {
137-
QueryBuilders.boolQuery().filter(
138-
QueryBuilders.prefixQuery("queries.id", "threat_intel_")
139-
)
140-
}
141-
else -> {
142-
QueryBuilders.boolQuery().mustNot(
143-
QueryBuilders.prefixQuery("queries.id", "threat_intel_")
144-
)
145-
}
146-
},
147-
ScoreMode.None
148-
)
149-
150-
// Add the nestedQueryBuilder to the main queryBuilder
151-
queryBuilder.must(nestedQueryBuilder)
152-
}
153-
154-
if (!searchString.isNullOrBlank()) {
155-
queryBuilder
156-
.should(QueryBuilders.matchQuery("index", searchString))
157-
.should(
158-
QueryBuilders.nestedQuery(
159-
"queries",
160-
QueryBuilders.matchQuery("queries.tags", searchString),
161-
ScoreMode.None
162-
)
163-
)
164-
.should(QueryBuilders.regexpQuery("monitor_name", searchString + ".*"))
165-
.minimumShouldMatch(1)
166-
}
167-
168-
if (!severity.isNullOrBlank()) {
169-
queryBuilder
170-
.must(
171-
QueryBuilders.nestedQuery(
172-
"queries",
173-
QueryBuilders.boolQuery().should(
174-
QueryBuilders.matchQuery("queries.tags", severity)
175-
),
176-
ScoreMode.None
177-
)
178-
)
179-
}
180-
181117
if (!tableProp.searchString.isNullOrBlank()) {
182118
queryBuilder
183119
.should(

0 commit comments

Comments
 (0)