|
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