@@ -51,8 +51,14 @@ public class MlMetadata implements XPackPlugin.XPackMetadataCustom {
51
51
private static final ParseField JOBS_FIELD = new ParseField ("jobs" );
52
52
private static final ParseField DATAFEEDS_FIELD = new ParseField ("datafeeds" );
53
53
public static final ParseField UPGRADE_MODE = new ParseField ("upgrade_mode" );
54
-
55
- public static final MlMetadata EMPTY_METADATA = new MlMetadata (Collections .emptySortedMap (), Collections .emptySortedMap (), false );
54
+ public static final ParseField RESET_MODE = new ParseField ("reset_mode" );
55
+
56
+ public static final MlMetadata EMPTY_METADATA = new MlMetadata (
57
+ Collections .emptySortedMap (),
58
+ Collections .emptySortedMap (),
59
+ false ,
60
+ false
61
+ );
56
62
// This parser follows the pattern that metadata is parsed leniently (to allow for enhancements)
57
63
public static final ObjectParser <Builder , Void > LENIENT_PARSER = new ObjectParser <>("ml_metadata" , true , Builder ::new );
58
64
@@ -61,19 +67,21 @@ public class MlMetadata implements XPackPlugin.XPackMetadataCustom {
61
67
LENIENT_PARSER .declareObjectArray (Builder ::putDatafeeds ,
62
68
(p , c ) -> DatafeedConfig .LENIENT_PARSER .apply (p , c ).build (), DATAFEEDS_FIELD );
63
69
LENIENT_PARSER .declareBoolean (Builder ::isUpgradeMode , UPGRADE_MODE );
64
-
70
+ LENIENT_PARSER . declareBoolean ( Builder :: isResetMode , RESET_MODE );
65
71
}
66
72
67
73
private final SortedMap <String , Job > jobs ;
68
74
private final SortedMap <String , DatafeedConfig > datafeeds ;
69
75
private final boolean upgradeMode ;
76
+ private final boolean resetMode ;
70
77
private final GroupOrJobLookup groupOrJobLookup ;
71
78
72
- private MlMetadata (SortedMap <String , Job > jobs , SortedMap <String , DatafeedConfig > datafeeds , boolean upgradeMode ) {
79
+ private MlMetadata (SortedMap <String , Job > jobs , SortedMap <String , DatafeedConfig > datafeeds , boolean upgradeMode , boolean resetMode ) {
73
80
this .jobs = Collections .unmodifiableSortedMap (jobs );
74
81
this .datafeeds = Collections .unmodifiableSortedMap (datafeeds );
75
82
this .groupOrJobLookup = new GroupOrJobLookup (jobs .values ());
76
83
this .upgradeMode = upgradeMode ;
84
+ this .resetMode = resetMode ;
77
85
}
78
86
79
87
public Map <String , Job > getJobs () {
@@ -105,6 +113,10 @@ public boolean isUpgradeMode() {
105
113
return upgradeMode ;
106
114
}
107
115
116
+ public boolean isResetMode () {
117
+ return resetMode ;
118
+ }
119
+
108
120
@ Override
109
121
public Version getMinimalSupportedVersion () {
110
122
return Version .V_6_0_0_alpha1 ;
@@ -144,6 +156,11 @@ public MlMetadata(StreamInput in) throws IOException {
144
156
} else {
145
157
this .upgradeMode = false ;
146
158
}
159
+ if (in .getVersion ().onOrAfter (Version .V_7_13_0 )) {
160
+ this .resetMode = in .readBoolean ();
161
+ } else {
162
+ this .resetMode = false ;
163
+ }
147
164
}
148
165
149
166
@ Override
@@ -153,6 +170,9 @@ public void writeTo(StreamOutput out) throws IOException {
153
170
if (out .getVersion ().onOrAfter (Version .V_6_7_0 )) {
154
171
out .writeBoolean (upgradeMode );
155
172
}
173
+ if (out .getVersion ().onOrAfter (Version .V_7_13_0 )) {
174
+ out .writeBoolean (resetMode );
175
+ }
156
176
}
157
177
158
178
private static <T extends Writeable > void writeMap (Map <String , T > map , StreamOutput out ) throws IOException {
@@ -170,6 +190,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
170
190
mapValuesToXContent (JOBS_FIELD , jobs , builder , extendedParams );
171
191
mapValuesToXContent (DATAFEEDS_FIELD , datafeeds , builder , extendedParams );
172
192
builder .field (UPGRADE_MODE .getPreferredName (), upgradeMode );
193
+ builder .field (RESET_MODE .getPreferredName (), resetMode );
173
194
return builder ;
174
195
}
175
196
@@ -191,11 +212,13 @@ public static class MlMetadataDiff implements NamedDiff<Metadata.Custom> {
191
212
final Diff <Map <String , Job >> jobs ;
192
213
final Diff <Map <String , DatafeedConfig >> datafeeds ;
193
214
final boolean upgradeMode ;
215
+ final boolean resetMode ;
194
216
195
217
MlMetadataDiff (MlMetadata before , MlMetadata after ) {
196
218
this .jobs = DiffableUtils .diff (before .jobs , after .jobs , DiffableUtils .getStringKeySerializer ());
197
219
this .datafeeds = DiffableUtils .diff (before .datafeeds , after .datafeeds , DiffableUtils .getStringKeySerializer ());
198
220
this .upgradeMode = after .upgradeMode ;
221
+ this .resetMode = after .resetMode ;
199
222
}
200
223
201
224
public MlMetadataDiff (StreamInput in ) throws IOException {
@@ -208,6 +231,11 @@ public MlMetadataDiff(StreamInput in) throws IOException {
208
231
} else {
209
232
upgradeMode = false ;
210
233
}
234
+ if (in .getVersion ().onOrAfter (Version .V_7_13_0 )) {
235
+ resetMode = in .readBoolean ();
236
+ } else {
237
+ resetMode = false ;
238
+ }
211
239
}
212
240
213
241
/**
@@ -219,7 +247,7 @@ public MlMetadataDiff(StreamInput in) throws IOException {
219
247
public Metadata .Custom apply (Metadata .Custom part ) {
220
248
TreeMap <String , Job > newJobs = new TreeMap <>(jobs .apply (((MlMetadata ) part ).jobs ));
221
249
TreeMap <String , DatafeedConfig > newDatafeeds = new TreeMap <>(datafeeds .apply (((MlMetadata ) part ).datafeeds ));
222
- return new MlMetadata (newJobs , newDatafeeds , upgradeMode );
250
+ return new MlMetadata (newJobs , newDatafeeds , upgradeMode , resetMode );
223
251
}
224
252
225
253
@ Override
@@ -229,6 +257,9 @@ public void writeTo(StreamOutput out) throws IOException {
229
257
if (out .getVersion ().onOrAfter (Version .V_6_7_0 )) {
230
258
out .writeBoolean (upgradeMode );
231
259
}
260
+ if (out .getVersion ().onOrAfter (Version .V_7_13_0 )) {
261
+ out .writeBoolean (resetMode );
262
+ }
232
263
}
233
264
234
265
@ Override
@@ -254,7 +285,8 @@ public boolean equals(Object o) {
254
285
MlMetadata that = (MlMetadata ) o ;
255
286
return Objects .equals (jobs , that .jobs ) &&
256
287
Objects .equals (datafeeds , that .datafeeds ) &&
257
- Objects .equals (upgradeMode , that .upgradeMode );
288
+ upgradeMode == that .upgradeMode &&
289
+ resetMode == that .resetMode ;
258
290
}
259
291
260
292
@ Override
@@ -264,14 +296,19 @@ public final String toString() {
264
296
265
297
@ Override
266
298
public int hashCode () {
267
- return Objects .hash (jobs , datafeeds , upgradeMode );
299
+ return Objects .hash (jobs , datafeeds , upgradeMode , resetMode );
268
300
}
269
301
270
302
public static class Builder {
271
303
272
304
private TreeMap <String , Job > jobs ;
273
305
private TreeMap <String , DatafeedConfig > datafeeds ;
274
306
private boolean upgradeMode ;
307
+ private boolean resetMode ;
308
+
309
+ public static Builder from (@ Nullable MlMetadata previous ) {
310
+ return new Builder (previous );
311
+ }
275
312
276
313
public Builder () {
277
314
jobs = new TreeMap <>();
@@ -353,8 +390,13 @@ public Builder isUpgradeMode(boolean upgradeMode) {
353
390
return this ;
354
391
}
355
392
393
+ public Builder isResetMode (boolean resetMode ) {
394
+ this .resetMode = resetMode ;
395
+ return this ;
396
+ }
397
+
356
398
public MlMetadata build () {
357
- return new MlMetadata (jobs , datafeeds , upgradeMode );
399
+ return new MlMetadata (jobs , datafeeds , upgradeMode , resetMode );
358
400
}
359
401
}
360
402
0 commit comments