|
30 | 30 | public class JobUpdate implements Writeable, ToXContentObject {
|
31 | 31 | public static final ParseField DETECTORS = new ParseField("detectors");
|
32 | 32 |
|
33 |
| - public static final ConstructingObjectParser<Builder, Void> PARSER = new ConstructingObjectParser<>( |
| 33 | + // For internal updates |
| 34 | + static final ConstructingObjectParser<Builder, Void> INTERNAL_PARSER = new ConstructingObjectParser<>( |
| 35 | + "job_update", args -> new Builder((String) args[0])); |
| 36 | + |
| 37 | + // For parsing REST requests |
| 38 | + public static final ConstructingObjectParser<Builder, Void> EXTERNAL_PARSER = new ConstructingObjectParser<>( |
34 | 39 | "job_update", args -> new Builder((String) args[0]));
|
35 | 40 |
|
36 | 41 | static {
|
37 |
| - PARSER.declareString(ConstructingObjectParser.optionalConstructorArg(), Job.ID); |
38 |
| - PARSER.declareStringArray(Builder::setGroups, Job.GROUPS); |
39 |
| - PARSER.declareStringOrNull(Builder::setDescription, Job.DESCRIPTION); |
40 |
| - PARSER.declareObjectArray(Builder::setDetectorUpdates, DetectorUpdate.PARSER, DETECTORS); |
41 |
| - PARSER.declareObject(Builder::setModelPlotConfig, ModelPlotConfig.CONFIG_PARSER, Job.MODEL_PLOT_CONFIG); |
42 |
| - PARSER.declareObject(Builder::setAnalysisLimits, AnalysisLimits.CONFIG_PARSER, Job.ANALYSIS_LIMITS); |
43 |
| - PARSER.declareString((builder, val) -> builder.setBackgroundPersistInterval( |
44 |
| - TimeValue.parseTimeValue(val, Job.BACKGROUND_PERSIST_INTERVAL.getPreferredName())), Job.BACKGROUND_PERSIST_INTERVAL); |
45 |
| - PARSER.declareLong(Builder::setRenormalizationWindowDays, Job.RENORMALIZATION_WINDOW_DAYS); |
46 |
| - PARSER.declareLong(Builder::setResultsRetentionDays, Job.RESULTS_RETENTION_DAYS); |
47 |
| - PARSER.declareLong(Builder::setModelSnapshotRetentionDays, Job.MODEL_SNAPSHOT_RETENTION_DAYS); |
48 |
| - PARSER.declareStringArray(Builder::setCategorizationFilters, AnalysisConfig.CATEGORIZATION_FILTERS); |
49 |
| - PARSER.declareField(Builder::setCustomSettings, (p, c) -> p.map(), Job.CUSTOM_SETTINGS, ObjectParser.ValueType.OBJECT); |
50 |
| - PARSER.declareString(Builder::setModelSnapshotId, Job.MODEL_SNAPSHOT_ID); |
51 |
| - PARSER.declareLong(Builder::setEstablishedModelMemory, Job.ESTABLISHED_MODEL_MEMORY); |
52 |
| - PARSER.declareString(Builder::setJobVersion, Job.JOB_VERSION); |
| 42 | + for (ConstructingObjectParser<Builder, Void> parser : Arrays.asList(INTERNAL_PARSER, EXTERNAL_PARSER)) { |
| 43 | + parser.declareString(ConstructingObjectParser.optionalConstructorArg(), Job.ID); |
| 44 | + parser.declareStringArray(Builder::setGroups, Job.GROUPS); |
| 45 | + parser.declareStringOrNull(Builder::setDescription, Job.DESCRIPTION); |
| 46 | + parser.declareObjectArray(Builder::setDetectorUpdates, DetectorUpdate.PARSER, DETECTORS); |
| 47 | + parser.declareObject(Builder::setModelPlotConfig, ModelPlotConfig.CONFIG_PARSER, Job.MODEL_PLOT_CONFIG); |
| 48 | + parser.declareObject(Builder::setAnalysisLimits, AnalysisLimits.CONFIG_PARSER, Job.ANALYSIS_LIMITS); |
| 49 | + parser.declareString((builder, val) -> builder.setBackgroundPersistInterval( |
| 50 | + TimeValue.parseTimeValue(val, Job.BACKGROUND_PERSIST_INTERVAL.getPreferredName())), Job.BACKGROUND_PERSIST_INTERVAL); |
| 51 | + parser.declareLong(Builder::setRenormalizationWindowDays, Job.RENORMALIZATION_WINDOW_DAYS); |
| 52 | + parser.declareLong(Builder::setResultsRetentionDays, Job.RESULTS_RETENTION_DAYS); |
| 53 | + parser.declareLong(Builder::setModelSnapshotRetentionDays, Job.MODEL_SNAPSHOT_RETENTION_DAYS); |
| 54 | + parser.declareStringArray(Builder::setCategorizationFilters, AnalysisConfig.CATEGORIZATION_FILTERS); |
| 55 | + parser.declareField(Builder::setCustomSettings, (p, c) -> p.map(), Job.CUSTOM_SETTINGS, ObjectParser.ValueType.OBJECT); |
| 56 | + } |
| 57 | + // These fields should not be set by a REST request |
| 58 | + INTERNAL_PARSER.declareString(Builder::setModelSnapshotId, Job.MODEL_SNAPSHOT_ID); |
| 59 | + INTERNAL_PARSER.declareLong(Builder::setEstablishedModelMemory, Job.ESTABLISHED_MODEL_MEMORY); |
| 60 | + INTERNAL_PARSER.declareString(Builder::setJobVersion, Job.JOB_VERSION); |
53 | 61 | }
|
54 | 62 |
|
55 | 63 | private final String jobId;
|
@@ -224,14 +232,14 @@ public Long getEstablishedModelMemory() {
|
224 | 232 | return establishedModelMemory;
|
225 | 233 | }
|
226 | 234 |
|
227 |
| - public boolean isAutodetectProcessUpdate() { |
228 |
| - return modelPlotConfig != null || detectorUpdates != null; |
229 |
| - } |
230 |
| - |
231 | 235 | public Version getJobVersion() {
|
232 | 236 | return jobVersion;
|
233 | 237 | }
|
234 | 238 |
|
| 239 | + public boolean isAutodetectProcessUpdate() { |
| 240 | + return modelPlotConfig != null || detectorUpdates != null; |
| 241 | + } |
| 242 | + |
235 | 243 | @Override
|
236 | 244 | public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
237 | 245 | builder.startObject();
|
@@ -332,7 +340,7 @@ public Set<String> getUpdateFields() {
|
332 | 340 | /**
|
333 | 341 | * Updates {@code source} with the new values in this object returning a new {@link Job}.
|
334 | 342 | *
|
335 |
| - * @param source Source job to be updated |
| 343 | + * @param source Source job to be updated |
336 | 344 | * @param maxModelMemoryLimit The maximum model memory allowed
|
337 | 345 | * @return A new job equivalent to {@code source} updated.
|
338 | 346 | */
|
|
0 commit comments