Skip to content

Commit fce78c2

Browse files
authored
Refactor: Reorganize code for Forecasting and AnomalyDetector packages (#925)
* Refactor: Reorganize code for Forecasting and AnomalyDetector packages This PR includes several refactorings to increase code reuse and improve readability: 1. Entity, FeatureData, and RestHandlerUtils have been moved from the 'ad' package to the 'timeseries' package, enabling their use within the Forecasting code. 2. A new class, DataByFeatureId, has been created to hold shared code previously located in FeatureData. FeatureData now inherits from DataByFeatureId. The standalone usage of DataByFeatureId will be detailed in subsequent PRs. 3. Renamed checkAnomalyDetectorFeaturesSyntax to checkFeaturesSyntax in RestHandlerUtils to make it more generic and usable for Forecasting. 4. Constants AGG_NAME_MAX_TIME, AGG_NAME_MIN_TIME, DATE_HISTOGRAM, and FEATURE_AGGS have been moved from ADCommonName to CommonName to make them accessible for Forecasting. 5. A new method, parseConfig, has been added to the Config class. This method can parse configuration for either AnomalyDetector or Forecaster based on input. Testing: The changes have been validated with a successful gradle build. Signed-off-by: Kaituo Li <[email protected]> * address Amit and Owais's comments Signed-off-by: Kaituo Li <[email protected]> --------- Signed-off-by: Kaituo Li <[email protected]>
1 parent 02c120f commit fce78c2

File tree

117 files changed

+474
-259
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+474
-259
lines changed

Diff for: src/main/java/org/opensearch/ad/AnomalyDetectorJobRunner.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import static org.opensearch.action.DocWriteResponse.Result.CREATED;
1515
import static org.opensearch.action.DocWriteResponse.Result.UPDATED;
1616
import static org.opensearch.ad.AnomalyDetectorPlugin.AD_THREAD_POOL_NAME;
17-
import static org.opensearch.ad.util.RestHandlerUtils.XCONTENT_WITH_TYPE;
1817
import static org.opensearch.common.xcontent.XContentParserUtils.ensureExpectedToken;
18+
import static org.opensearch.timeseries.util.RestHandlerUtils.XCONTENT_WITH_TYPE;
1919

2020
import java.io.IOException;
2121
import java.time.Instant;

Diff for: src/main/java/org/opensearch/ad/AnomalyDetectorRunner.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@
3131
import org.opensearch.ad.ml.ThresholdingResult;
3232
import org.opensearch.ad.model.AnomalyDetector;
3333
import org.opensearch.ad.model.AnomalyResult;
34-
import org.opensearch.ad.model.Entity;
3534
import org.opensearch.ad.model.EntityAnomalyResult;
36-
import org.opensearch.ad.model.FeatureData;
3735
import org.opensearch.ad.util.MultiResponsesDelegateActionListener;
3836
import org.opensearch.common.util.concurrent.ThreadContext;
37+
import org.opensearch.timeseries.model.Entity;
3938
import org.opensearch.timeseries.model.Feature;
39+
import org.opensearch.timeseries.model.FeatureData;
4040

4141
/**
4242
* Runner to trigger an anomaly detector.

Diff for: src/main/java/org/opensearch/ad/EntityProfileRunner.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.opensearch.ad.model.AnomalyDetector;
3131
import org.opensearch.ad.model.AnomalyDetectorJob;
3232
import org.opensearch.ad.model.AnomalyResult;
33-
import org.opensearch.ad.model.Entity;
3433
import org.opensearch.ad.model.EntityProfile;
3534
import org.opensearch.ad.model.EntityProfileName;
3635
import org.opensearch.ad.model.EntityState;
@@ -56,6 +55,7 @@
5655
import org.opensearch.search.builder.SearchSourceBuilder;
5756
import org.opensearch.timeseries.constant.CommonMessages;
5857
import org.opensearch.timeseries.constant.CommonName;
58+
import org.opensearch.timeseries.model.Entity;
5959
import org.opensearch.timeseries.model.IntervalTimeConfiguration;
6060
import org.opensearch.timeseries.util.ParseUtils;
6161

@@ -460,7 +460,7 @@ private SearchRequest createLastSampleTimeRequest(String detectorId, long enable
460460

461461
SearchSourceBuilder source = new SearchSourceBuilder()
462462
.query(boolQueryBuilder)
463-
.aggregation(AggregationBuilders.max(ADCommonName.AGG_NAME_MAX_TIME).field(CommonName.EXECUTION_END_TIME_FIELD))
463+
.aggregation(AggregationBuilders.max(CommonName.AGG_NAME_MAX_TIME).field(CommonName.EXECUTION_END_TIME_FIELD))
464464
.trackTotalHits(false)
465465
.size(0);
466466

Diff for: src/main/java/org/opensearch/ad/ExecuteADResultResponseRecorder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.opensearch.ad.model.AnomalyDetector;
3030
import org.opensearch.ad.model.AnomalyResult;
3131
import org.opensearch.ad.model.DetectorProfileName;
32-
import org.opensearch.ad.model.FeatureData;
3332
import org.opensearch.ad.task.ADTaskCacheManager;
3433
import org.opensearch.ad.task.ADTaskManager;
3534
import org.opensearch.ad.transport.AnomalyResultResponse;
@@ -49,6 +48,7 @@
4948
import org.opensearch.timeseries.common.exception.EndRunException;
5049
import org.opensearch.timeseries.common.exception.ResourceNotFoundException;
5150
import org.opensearch.timeseries.common.exception.TimeSeriesException;
51+
import org.opensearch.timeseries.model.FeatureData;
5252
import org.opensearch.timeseries.model.IntervalTimeConfiguration;
5353

5454
public class ExecuteADResultResponseRecorder {

Diff for: src/main/java/org/opensearch/ad/caching/EntityCache.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
import org.opensearch.ad.ml.EntityModel;
2323
import org.opensearch.ad.ml.ModelState;
2424
import org.opensearch.ad.model.AnomalyDetector;
25-
import org.opensearch.ad.model.Entity;
2625
import org.opensearch.ad.model.ModelProfile;
26+
import org.opensearch.timeseries.model.Entity;
2727

2828
public interface EntityCache extends MaintenanceState, CleanState, DetectorModelSize {
2929
/**

Diff for: src/main/java/org/opensearch/ad/caching/PriorityCache.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
import org.opensearch.ad.ml.ModelManager.ModelType;
4848
import org.opensearch.ad.ml.ModelState;
4949
import org.opensearch.ad.model.AnomalyDetector;
50-
import org.opensearch.ad.model.Entity;
5150
import org.opensearch.ad.model.ModelProfile;
5251
import org.opensearch.ad.ratelimit.CheckpointMaintainWorker;
5352
import org.opensearch.ad.ratelimit.CheckpointWriteWorker;
@@ -62,6 +61,7 @@
6261
import org.opensearch.timeseries.common.exception.LimitExceededException;
6362
import org.opensearch.timeseries.common.exception.TimeSeriesException;
6463
import org.opensearch.timeseries.constant.CommonMessages;
64+
import org.opensearch.timeseries.model.Entity;
6565
import org.opensearch.timeseries.settings.TimeSeriesSettings;
6666

6767
import com.google.common.cache.Cache;

Diff for: src/main/java/org/opensearch/ad/cluster/ADDataMigrator.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
import static org.opensearch.ad.model.ADTask.TASK_TYPE_FIELD;
1818
import static org.opensearch.ad.model.ADTaskType.taskTypeToString;
1919
import static org.opensearch.ad.settings.AnomalyDetectorSettings.MAX_DETECTOR_UPPER_LIMIT;
20-
import static org.opensearch.ad.util.RestHandlerUtils.XCONTENT_WITH_TYPE;
21-
import static org.opensearch.ad.util.RestHandlerUtils.createXContentParserFromRegistry;
2220
import static org.opensearch.common.xcontent.XContentParserUtils.ensureExpectedToken;
21+
import static org.opensearch.timeseries.util.RestHandlerUtils.XCONTENT_WITH_TYPE;
22+
import static org.opensearch.timeseries.util.RestHandlerUtils.createXContentParserFromRegistry;
2323

2424
import java.io.IOException;
2525
import java.time.Instant;

Diff for: src/main/java/org/opensearch/ad/constant/ADCommonMessages.java

-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public class ADCommonMessages {
4848
public static String HISTORICAL_ANALYSIS_CANCELLED = "Historical analysis cancelled by user";
4949
public static String HC_DETECTOR_TASK_IS_UPDATING = "HC detector task is updating";
5050
public static String INVALID_TIME_CONFIGURATION_UNITS = "Time unit %s is not supported";
51-
public static String DUPLICATE_FEATURE_AGGREGATION_NAMES = "Detector has duplicate feature aggregation query names: ";
5251
public static String FAIL_TO_GET_DETECTOR = "Fail to get detector";
5352
public static String FAIL_TO_GET_DETECTOR_INFO = "Fail to get detector info";
5453
public static String FAIL_TO_CREATE_DETECTOR = "Fail to create detector";

Diff for: src/main/java/org/opensearch/ad/constant/ADCommonName.java

-12
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,6 @@ public class ADCommonName {
7676
public static final String AD_TASK_REMOTE = "ad_task_remote";
7777
public static final String CANCEL_TASK = "cancel_task";
7878

79-
// ======================================
80-
// Query
81-
// ======================================
82-
// Used in finding the max timestamp
83-
public static final String AGG_NAME_MAX_TIME = "max_timefield";
84-
// Used in finding the min timestamp
85-
public static final String AGG_NAME_MIN_TIME = "min_timefield";
86-
// date histogram aggregation name
87-
public static final String DATE_HISTOGRAM = "date_histogram";
88-
// feature aggregation name
89-
public static final String FEATURE_AGGS = "feature_aggs";
90-
9179
// ======================================
9280
// Used in stats API
9381
// ======================================

Diff for: src/main/java/org/opensearch/ad/feature/CompositeRetriever.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.opensearch.action.search.SearchResponse;
3030
import org.opensearch.action.support.IndicesOptions;
3131
import org.opensearch.ad.model.AnomalyDetector;
32-
import org.opensearch.ad.model.Entity;
3332
import org.opensearch.ad.util.SecurityClientUtil;
3433
import org.opensearch.client.Client;
3534
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
@@ -47,6 +46,7 @@
4746
import org.opensearch.search.aggregations.bucket.composite.CompositeAggregationBuilder;
4847
import org.opensearch.search.aggregations.bucket.composite.TermsValuesSourceBuilder;
4948
import org.opensearch.search.builder.SearchSourceBuilder;
49+
import org.opensearch.timeseries.model.Entity;
5050
import org.opensearch.timeseries.model.Feature;
5151
import org.opensearch.timeseries.util.ParseUtils;
5252

Diff for: src/main/java/org/opensearch/ad/feature/FeatureManager.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@
4242
import org.opensearch.action.support.ThreadedActionListener;
4343
import org.opensearch.ad.CleanState;
4444
import org.opensearch.ad.model.AnomalyDetector;
45-
import org.opensearch.ad.model.Entity;
4645
import org.opensearch.threadpool.ThreadPool;
4746
import org.opensearch.timeseries.common.exception.EndRunException;
4847
import org.opensearch.timeseries.constant.CommonMessages;
4948
import org.opensearch.timeseries.dataprocessor.Imputer;
49+
import org.opensearch.timeseries.model.Entity;
5050

5151
/**
5252
* A facade managing feature data operations and buffers.

Diff for: src/main/java/org/opensearch/ad/feature/SearchFeatureDao.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
package org.opensearch.ad.feature;
1313

1414
import static org.apache.commons.math3.linear.MatrixUtils.createRealMatrix;
15-
import static org.opensearch.ad.constant.ADCommonName.DATE_HISTOGRAM;
1615
import static org.opensearch.ad.settings.AnomalyDetectorSettings.MAX_ENTITIES_FOR_PREVIEW;
1716
import static org.opensearch.ad.settings.AnomalyDetectorSettings.PAGE_SIZE;
1817
import static org.opensearch.ad.settings.AnomalyDetectorSettings.PREVIEW_TIMEOUT_IN_MILLIS;
@@ -40,9 +39,7 @@
4039
import org.opensearch.action.ActionListener;
4140
import org.opensearch.action.search.SearchRequest;
4241
import org.opensearch.action.search.SearchResponse;
43-
import org.opensearch.ad.constant.ADCommonName;
4442
import org.opensearch.ad.model.AnomalyDetector;
45-
import org.opensearch.ad.model.Entity;
4643
import org.opensearch.ad.util.SecurityClientUtil;
4744
import org.opensearch.client.Client;
4845
import org.opensearch.cluster.service.ClusterService;
@@ -69,7 +66,9 @@
6966
import org.opensearch.search.sort.FieldSortBuilder;
7067
import org.opensearch.search.sort.SortOrder;
7168
import org.opensearch.timeseries.common.exception.TimeSeriesException;
69+
import org.opensearch.timeseries.constant.CommonName;
7270
import org.opensearch.timeseries.dataprocessor.Imputer;
71+
import org.opensearch.timeseries.model.Entity;
7372
import org.opensearch.timeseries.model.IntervalTimeConfiguration;
7473
import org.opensearch.timeseries.util.ParseUtils;
7574

@@ -169,7 +168,7 @@ public SearchFeatureDao(
169168
*/
170169
public void getLatestDataTime(AnomalyDetector detector, ActionListener<Optional<Long>> listener) {
171170
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()
172-
.aggregation(AggregationBuilders.max(ADCommonName.AGG_NAME_MAX_TIME).field(detector.getTimeField()))
171+
.aggregation(AggregationBuilders.max(CommonName.AGG_NAME_MAX_TIME).field(detector.getTimeField()))
173172
.size(0);
174173
SearchRequest searchRequest = new SearchRequest().indices(detector.getIndices().toArray(new String[0])).source(searchSourceBuilder);
175174
final ActionListener<SearchResponse> searchResponseListener = ActionListener
@@ -569,7 +568,7 @@ private Map<Long, Optional<double[]>> parseBucketAggregationResponse(SearchRespo
569568
List<InternalComposite.InternalBucket> buckets = ((InternalComposite) agg).getBuckets();
570569
buckets.forEach(bucket -> {
571570
Optional<double[]> featureData = parseAggregations(Optional.ofNullable(bucket.getAggregations()), featureIds);
572-
dataPoints.put((Long) bucket.getKey().get(DATE_HISTOGRAM), featureData);
571+
dataPoints.put((Long) bucket.getKey().get(CommonName.DATE_HISTOGRAM), featureData);
573572
});
574573
}
575574
return dataPoints;

Diff for: src/main/java/org/opensearch/ad/ml/CheckpointDao.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@
5757
import org.opensearch.ad.constant.ADCommonName;
5858
import org.opensearch.ad.indices.ADIndex;
5959
import org.opensearch.ad.indices.AnomalyDetectionIndices;
60-
import org.opensearch.ad.model.Entity;
6160
import org.opensearch.ad.util.ClientUtil;
6261
import org.opensearch.client.Client;
6362
import org.opensearch.index.IndexNotFoundException;
@@ -69,6 +68,7 @@
6968
import org.opensearch.timeseries.common.exception.ResourceNotFoundException;
7069
import org.opensearch.timeseries.common.exception.TimeSeriesException;
7170
import org.opensearch.timeseries.constant.CommonName;
71+
import org.opensearch.timeseries.model.Entity;
7272

7373
import com.amazon.randomcutforest.RandomCutForest;
7474
import com.amazon.randomcutforest.config.Precision;

Diff for: src/main/java/org/opensearch/ad/ml/EntityColdStarter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import org.opensearch.ad.feature.FeatureManager;
4646
import org.opensearch.ad.feature.SearchFeatureDao;
4747
import org.opensearch.ad.model.AnomalyDetector;
48-
import org.opensearch.ad.model.Entity;
4948
import org.opensearch.ad.ratelimit.CheckpointWriteWorker;
5049
import org.opensearch.ad.ratelimit.RequestPriority;
5150
import org.opensearch.ad.settings.ADEnabledSetting;
@@ -55,6 +54,7 @@
5554
import org.opensearch.timeseries.common.exception.EndRunException;
5655
import org.opensearch.timeseries.common.exception.TimeSeriesException;
5756
import org.opensearch.timeseries.dataprocessor.Imputer;
57+
import org.opensearch.timeseries.model.Entity;
5858
import org.opensearch.timeseries.model.IntervalTimeConfiguration;
5959
import org.opensearch.timeseries.settings.TimeSeriesSettings;
6060

Diff for: src/main/java/org/opensearch/ad/ml/EntityModel.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import java.util.Optional;
1616
import java.util.Queue;
1717

18-
import org.opensearch.ad.model.Entity;
18+
import org.opensearch.timeseries.model.Entity;
1919

2020
import com.amazon.randomcutforest.parkservices.ThresholdedRandomCutForest;
2121

Diff for: src/main/java/org/opensearch/ad/ml/ModelManager.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@
3838
import org.opensearch.ad.constant.ADCommonMessages;
3939
import org.opensearch.ad.feature.FeatureManager;
4040
import org.opensearch.ad.model.AnomalyDetector;
41-
import org.opensearch.ad.model.Entity;
4241
import org.opensearch.ad.settings.AnomalyDetectorSettings;
4342
import org.opensearch.ad.util.DateUtils;
4443
import org.opensearch.cluster.service.ClusterService;
4544
import org.opensearch.common.settings.Setting;
4645
import org.opensearch.common.settings.Settings;
4746
import org.opensearch.common.unit.TimeValue;
4847
import org.opensearch.timeseries.common.exception.ResourceNotFoundException;
48+
import org.opensearch.timeseries.model.Entity;
4949
import org.opensearch.timeseries.settings.TimeSeriesSettings;
5050

5151
import com.amazon.randomcutforest.RandomCutForest;

Diff for: src/main/java/org/opensearch/ad/ml/ThresholdingResult.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import org.apache.commons.lang.builder.ToStringBuilder;
2020
import org.opensearch.ad.model.AnomalyDetector;
2121
import org.opensearch.ad.model.AnomalyResult;
22-
import org.opensearch.ad.model.Entity;
23-
import org.opensearch.ad.model.FeatureData;
22+
import org.opensearch.timeseries.model.Entity;
23+
import org.opensearch.timeseries.model.FeatureData;
2424

2525
/**
2626
* Data object containing thresholding results.

Diff for: src/main/java/org/opensearch/ad/model/ADEntityTaskProfile.java

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.opensearch.core.xcontent.ToXContentObject;
2323
import org.opensearch.core.xcontent.XContentBuilder;
2424
import org.opensearch.core.xcontent.XContentParser;
25+
import org.opensearch.timeseries.model.Entity;
2526

2627
/**
2728
* HC detector's entity task profile.

Diff for: src/main/java/org/opensearch/ad/model/ADTask.java

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.opensearch.core.xcontent.XContentParser;
2727
import org.opensearch.timeseries.annotation.Generated;
2828
import org.opensearch.timeseries.model.DateRange;
29+
import org.opensearch.timeseries.model.Entity;
2930
import org.opensearch.timeseries.util.ParseUtils;
3031

3132
import com.google.common.base.Objects;

Diff for: src/main/java/org/opensearch/ad/model/AnomalyResult.java

+2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
import org.opensearch.core.xcontent.XContentParser;
3838
import org.opensearch.timeseries.annotation.Generated;
3939
import org.opensearch.timeseries.constant.CommonName;
40+
import org.opensearch.timeseries.model.Entity;
41+
import org.opensearch.timeseries.model.FeatureData;
4042
import org.opensearch.timeseries.util.ParseUtils;
4143

4244
import com.google.common.base.Objects;

Diff for: src/main/java/org/opensearch/ad/model/ModelProfile.java

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.opensearch.core.xcontent.ToXContentObject;
2323
import org.opensearch.core.xcontent.XContentBuilder;
2424
import org.opensearch.timeseries.constant.CommonName;
25+
import org.opensearch.timeseries.model.Entity;
2526

2627
/**
2728
* Used to show model information in profile API

Diff for: src/main/java/org/opensearch/ad/ratelimit/CheckpointReadWorker.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import org.opensearch.ad.ml.ThresholdingResult;
4747
import org.opensearch.ad.model.AnomalyDetector;
4848
import org.opensearch.ad.model.AnomalyResult;
49-
import org.opensearch.ad.model.Entity;
5049
import org.opensearch.ad.stats.ADStats;
5150
import org.opensearch.ad.util.ExceptionUtil;
5251
import org.opensearch.cluster.service.ClusterService;
@@ -56,6 +55,7 @@
5655
import org.opensearch.threadpool.ThreadPool;
5756
import org.opensearch.timeseries.common.exception.EndRunException;
5857
import org.opensearch.timeseries.constant.CommonMessages;
58+
import org.opensearch.timeseries.model.Entity;
5959
import org.opensearch.timeseries.stats.StatNames;
6060
import org.opensearch.timeseries.util.ParseUtils;
6161

Diff for: src/main/java/org/opensearch/ad/ratelimit/EntityFeatureRequest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
package org.opensearch.ad.ratelimit;
1313

14-
import org.opensearch.ad.model.Entity;
14+
import org.opensearch.timeseries.model.Entity;
1515

1616
public class EntityFeatureRequest extends EntityRequest {
1717
private final double[] currentFeature;

Diff for: src/main/java/org/opensearch/ad/ratelimit/EntityRequest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import java.util.Optional;
1515

16-
import org.opensearch.ad.model.Entity;
16+
import org.opensearch.timeseries.model.Entity;
1717

1818
public class EntityRequest extends QueuedRequest {
1919
private final Entity entity;

Diff for: src/main/java/org/opensearch/ad/rest/AbstractSearchAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111

1212
package org.opensearch.ad.rest;
1313

14-
import static org.opensearch.ad.util.RestHandlerUtils.getSourceContext;
1514
import static org.opensearch.core.xcontent.ToXContent.EMPTY_PARAMS;
15+
import static org.opensearch.timeseries.util.RestHandlerUtils.getSourceContext;
1616

1717
import java.io.IOException;
1818
import java.util.ArrayList;

Diff for: src/main/java/org/opensearch/ad/rest/RestAnomalyDetectorJobAction.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
package org.opensearch.ad.rest;
1313

1414
import static org.opensearch.ad.settings.AnomalyDetectorSettings.REQUEST_TIMEOUT;
15-
import static org.opensearch.ad.util.RestHandlerUtils.DETECTOR_ID;
16-
import static org.opensearch.ad.util.RestHandlerUtils.IF_PRIMARY_TERM;
17-
import static org.opensearch.ad.util.RestHandlerUtils.IF_SEQ_NO;
18-
import static org.opensearch.ad.util.RestHandlerUtils.START_JOB;
19-
import static org.opensearch.ad.util.RestHandlerUtils.STOP_JOB;
2015
import static org.opensearch.common.xcontent.XContentParserUtils.ensureExpectedToken;
16+
import static org.opensearch.timeseries.util.RestHandlerUtils.DETECTOR_ID;
17+
import static org.opensearch.timeseries.util.RestHandlerUtils.IF_PRIMARY_TERM;
18+
import static org.opensearch.timeseries.util.RestHandlerUtils.IF_SEQ_NO;
19+
import static org.opensearch.timeseries.util.RestHandlerUtils.START_JOB;
20+
import static org.opensearch.timeseries.util.RestHandlerUtils.STOP_JOB;
2121

2222
import java.io.IOException;
2323
import java.util.List;

Diff for: src/main/java/org/opensearch/ad/rest/RestDeleteAnomalyDetectorAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
package org.opensearch.ad.rest;
1313

14-
import static org.opensearch.ad.util.RestHandlerUtils.DETECTOR_ID;
14+
import static org.opensearch.timeseries.util.RestHandlerUtils.DETECTOR_ID;
1515

1616
import java.io.IOException;
1717
import java.util.List;

Diff for: src/main/java/org/opensearch/ad/rest/RestExecuteAnomalyDetectorAction.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
package org.opensearch.ad.rest;
1313

1414
import static org.opensearch.ad.settings.AnomalyDetectorSettings.REQUEST_TIMEOUT;
15-
import static org.opensearch.ad.util.RestHandlerUtils.DETECTOR_ID;
16-
import static org.opensearch.ad.util.RestHandlerUtils.RUN;
1715
import static org.opensearch.common.xcontent.XContentParserUtils.ensureExpectedToken;
16+
import static org.opensearch.timeseries.util.RestHandlerUtils.DETECTOR_ID;
17+
import static org.opensearch.timeseries.util.RestHandlerUtils.RUN;
1818

1919
import java.io.IOException;
2020
import java.util.List;

0 commit comments

Comments
 (0)