1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ *
5
+ * The OpenSearch Contributors require contributions made to
6
+ * this file be licensed under the Apache-2.0 license or a
7
+ * compatible open source license.
8
+ */
9
+
1
10
package org .opensearch .ad .rest ;
2
11
3
12
import static org .opensearch .ad .model .AnomalyDetector .ANOMALY_DETECTORS_INDEX ;
4
13
import static org .opensearch .ad .settings .AnomalyDetectorSettings .ANOMALY_DETECTORS_INDEX_MAPPING_FILE ;
5
14
import static org .opensearch .common .xcontent .XContentParserUtils .ensureExpectedToken ;
6
15
import static org .opensearch .rest .RestRequest .Method .POST ;
7
16
import static org .opensearch .rest .RestStatus .BAD_REQUEST ;
17
+ import static org .opensearch .rest .RestStatus .CREATED ;
8
18
import static org .opensearch .rest .RestStatus .NOT_FOUND ;
9
19
import static org .opensearch .rest .RestStatus .OK ;
10
20
13
23
import java .net .URL ;
14
24
import java .nio .charset .StandardCharsets ;
15
25
import java .time .Instant ;
16
- import java .util .ArrayList ;
17
26
import java .util .List ;
18
27
19
28
import org .apache .logging .log4j .LogManager ;
22
31
import org .opensearch .ad .constant .CommonErrorMessages ;
23
32
import org .opensearch .ad .indices .AnomalyDetectionIndices ;
24
33
import org .opensearch .ad .model .AnomalyDetector ;
25
- import org .opensearch .ad .model .AnomalyResult ;
26
- import org .opensearch .ad .model .DetectorInternalState ;
27
34
import org .opensearch .ad .settings .EnabledSetting ;
28
35
import org .opensearch .client .json .JsonpMapper ;
29
36
import org .opensearch .client .opensearch .OpenSearchClient ;
38
45
import org .opensearch .common .xcontent .XContentType ;
39
46
import org .opensearch .extensions .rest .ExtensionRestRequest ;
40
47
import org .opensearch .extensions .rest .ExtensionRestResponse ;
41
- import org .opensearch .index .query .BoolQueryBuilder ;
42
- import org .opensearch .index .query .NestedQueryBuilder ;
43
- import org .opensearch .index .query .QueryBuilder ;
44
- import org .opensearch .index .query .RangeQueryBuilder ;
45
- import org .opensearch .plugins .SearchPlugin ;
46
48
import org .opensearch .rest .RestHandler .Route ;
47
49
import org .opensearch .rest .RestRequest .Method ;
48
- import org .opensearch .rest .RestStatus ;
49
50
import org .opensearch .sdk .ExtensionRestHandler ;
50
51
import org .opensearch .sdk .ExtensionsRunner ;
51
- import org .opensearch .search .aggregations .BaseAggregationBuilder ;
52
- import org .opensearch .search .aggregations .bucket .filter .FilterAggregationBuilder ;
53
- import org .opensearch .search .aggregations .bucket .filter .InternalFilter ;
54
- import org .opensearch .search .aggregations .metrics .InternalSum ;
55
- import org .opensearch .search .aggregations .metrics .SumAggregationBuilder ;
56
52
57
53
import com .google .common .base .Charsets ;
58
54
import com .google .common .io .Resources ;
61
57
public class RestCreateDetectorAction implements ExtensionRestHandler {
62
58
private static final Logger logger = LogManager .getLogger (RestCreateDetectorAction .class );
63
59
64
- private final AnomalyDetectorExtension anomalyDetectorExtension ;
65
60
private final OpenSearchClient sdkClient ;
66
- private final ExtensionsRunner extensionsRunner ;
61
+ private final NamedXContentRegistry xContentRegistry ;
67
62
68
63
public RestCreateDetectorAction (ExtensionsRunner runner , AnomalyDetectorExtension extension ) {
69
- this .extensionsRunner = runner ;
70
- this .anomalyDetectorExtension = extension ;
64
+ this .xContentRegistry = runner .getNamedXContentRegistry ().getRegistry ();
71
65
this .sdkClient = extension .getClient ();
72
66
}
73
67
@@ -112,56 +106,6 @@ private IndexResponse indexAnomalyDetector(AnomalyDetector anomalyDetector) thro
112
106
113
107
}
114
108
115
- public List <NamedXContentRegistry .Entry > getNamedXWriteables () {
116
- List <NamedXContentRegistry .Entry > entries = new ArrayList <>();
117
- entries .add (AnomalyDetector .XCONTENT_REGISTRY );
118
- entries .add (AnomalyResult .XCONTENT_REGISTRY );
119
- entries .add (DetectorInternalState .XCONTENT_REGISTRY );
120
- entries
121
- .add (
122
- registerQuery (
123
- new SearchPlugin .QuerySpec <>(NestedQueryBuilder .NAME , NestedQueryBuilder ::new , NestedQueryBuilder ::fromXContent )
124
- )
125
- );
126
- entries
127
- .add (registerQuery (new SearchPlugin .QuerySpec <>(BoolQueryBuilder .NAME , BoolQueryBuilder ::new , BoolQueryBuilder ::fromXContent )));
128
- entries
129
- .add (
130
- registerAggregation (
131
- new SearchPlugin .AggregationSpec (SumAggregationBuilder .NAME , SumAggregationBuilder ::new , SumAggregationBuilder .PARSER )
132
- .addResultReader (InternalSum ::new )
133
- )
134
- );
135
-
136
- entries
137
- .add (
138
- registerAggregation (
139
- new SearchPlugin .AggregationSpec (
140
- FilterAggregationBuilder .NAME ,
141
- FilterAggregationBuilder ::new ,
142
- FilterAggregationBuilder ::parse
143
- ).addResultReader (InternalFilter ::new )
144
- )
145
- );
146
- entries
147
- .add (
148
- registerQuery (new SearchPlugin .QuerySpec <>(RangeQueryBuilder .NAME , RangeQueryBuilder ::new , RangeQueryBuilder ::fromXContent ))
149
- );
150
- return entries ;
151
-
152
- }
153
-
154
- private NamedXContentRegistry .Entry registerQuery (SearchPlugin .QuerySpec <?> spec ) {
155
- return new NamedXContentRegistry .Entry (QueryBuilder .class , spec .getName (), (p , c ) -> spec .getParser ().fromXContent (p ));
156
- }
157
-
158
- private NamedXContentRegistry .Entry registerAggregation (SearchPlugin .AggregationSpec spec ) {
159
- return new NamedXContentRegistry .Entry (BaseAggregationBuilder .class , spec .getName (), (p , c ) -> {
160
- String name = (String ) c ;
161
- return spec .getParser ().parse (p , name );
162
- });
163
- }
164
-
165
109
private CreateIndexRequest initAnomalyDetectorIndex () {
166
110
JsonpMapper mapper = sdkClient ._transport ().jsonpMapper ();
167
111
JsonParser parser = null ;
@@ -201,13 +145,12 @@ public ExtensionRestResponse handleRequest(ExtensionRestRequest request) {
201
145
);
202
146
}
203
147
204
- NamedXContentRegistry xContentRegistry = new NamedXContentRegistry (getNamedXWriteables ());
205
148
XContentParser parser ;
206
149
AnomalyDetector detector ;
207
150
XContentBuilder builder = null ;
208
151
CreateIndexRequest createIndexRequest ;
209
152
try {
210
- parser = request .contentParser (xContentRegistry );
153
+ parser = request .contentParser (this . xContentRegistry );
211
154
ensureExpectedToken (XContentParser .Token .START_OBJECT , parser .nextToken (), parser );
212
155
detector = AnomalyDetector .parse (parser );
213
156
createIndexRequest = initAnomalyDetectorIndex ();
@@ -222,7 +165,7 @@ public ExtensionRestResponse handleRequest(ExtensionRestRequest request) {
222
165
builder .field ("seqNo" , indexResponse .seqNo ());
223
166
builder .field ("primaryTerm" , indexResponse .primaryTerm ());
224
167
builder .field ("detector" , detector );
225
- builder .field ("status" , RestStatus . CREATED );
168
+ builder .field ("status" , CREATED );
226
169
builder .endObject ();
227
170
} catch (IOException e ) {
228
171
e .printStackTrace ();
0 commit comments