|
25 | 25 | import org.elasticsearch.Version;
|
26 | 26 | import org.elasticsearch.cluster.ClusterState.Custom;
|
27 | 27 | import org.elasticsearch.common.Nullable;
|
| 28 | +import org.elasticsearch.common.Strings; |
28 | 29 | import org.elasticsearch.common.collect.ImmutableOpenMap;
|
29 | 30 | import org.elasticsearch.common.io.stream.StreamInput;
|
30 | 31 | import org.elasticsearch.common.io.stream.StreamOutput;
|
@@ -76,7 +77,7 @@ public String toString() {
|
76 | 77 | return builder.append("]").toString();
|
77 | 78 | }
|
78 | 79 |
|
79 |
| - public static class Entry { |
| 80 | + public static class Entry implements ToXContent { |
80 | 81 | private final State state;
|
81 | 82 | private final Snapshot snapshot;
|
82 | 83 | private final boolean includeGlobalState;
|
@@ -210,7 +211,50 @@ public int hashCode() {
|
210 | 211 |
|
211 | 212 | @Override
|
212 | 213 | public String toString() {
|
213 |
| - return snapshot.toString(); |
| 214 | + return Strings.toString(this); |
| 215 | + } |
| 216 | + |
| 217 | + @Override |
| 218 | + public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { |
| 219 | + builder.startObject(); |
| 220 | + builder.field(REPOSITORY, snapshot.getRepository()); |
| 221 | + builder.field(SNAPSHOT, snapshot.getSnapshotId().getName()); |
| 222 | + builder.field(UUID, snapshot.getSnapshotId().getUUID()); |
| 223 | + builder.field(INCLUDE_GLOBAL_STATE, includeGlobalState()); |
| 224 | + builder.field(PARTIAL, partial); |
| 225 | + builder.field(STATE, state); |
| 226 | + builder.startArray(INDICES); |
| 227 | + { |
| 228 | + for (IndexId index : indices) { |
| 229 | + index.toXContent(builder, params); |
| 230 | + } |
| 231 | + } |
| 232 | + builder.endArray(); |
| 233 | + builder.humanReadableField(START_TIME_MILLIS, START_TIME, new TimeValue(startTime)); |
| 234 | + builder.field(REPOSITORY_STATE_ID, repositoryStateId); |
| 235 | + builder.startArray(SHARDS); |
| 236 | + { |
| 237 | + for (ObjectObjectCursor<ShardId, ShardSnapshotStatus> shardEntry : shards) { |
| 238 | + ShardId shardId = shardEntry.key; |
| 239 | + ShardSnapshotStatus status = shardEntry.value; |
| 240 | + builder.startObject(); |
| 241 | + { |
| 242 | + builder.field(INDEX, shardId.getIndex()); |
| 243 | + builder.field(SHARD, shardId.getId()); |
| 244 | + builder.field(STATE, status.state()); |
| 245 | + builder.field(NODE, status.nodeId()); |
| 246 | + } |
| 247 | + builder.endObject(); |
| 248 | + } |
| 249 | + } |
| 250 | + builder.endArray(); |
| 251 | + builder.endObject(); |
| 252 | + return builder; |
| 253 | + } |
| 254 | + |
| 255 | + @Override |
| 256 | + public boolean isFragment() { |
| 257 | + return false; |
214 | 258 | }
|
215 | 259 |
|
216 | 260 | private ImmutableOpenMap<String, List<ShardId>> findWaitingIndices(ImmutableOpenMap<ShardId, ShardSnapshotStatus> shards) {
|
@@ -507,48 +551,12 @@ public void writeTo(StreamOutput out) throws IOException {
|
507 | 551 | public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params params) throws IOException {
|
508 | 552 | builder.startArray(SNAPSHOTS);
|
509 | 553 | for (Entry entry : entries) {
|
510 |
| - toXContent(entry, builder, params); |
| 554 | + entry.toXContent(builder, params); |
511 | 555 | }
|
512 | 556 | builder.endArray();
|
513 | 557 | return builder;
|
514 | 558 | }
|
515 | 559 |
|
516 |
| - public void toXContent(Entry entry, XContentBuilder builder, ToXContent.Params params) throws IOException { |
517 |
| - builder.startObject(); |
518 |
| - builder.field(REPOSITORY, entry.snapshot().getRepository()); |
519 |
| - builder.field(SNAPSHOT, entry.snapshot().getSnapshotId().getName()); |
520 |
| - builder.field(UUID, entry.snapshot().getSnapshotId().getUUID()); |
521 |
| - builder.field(INCLUDE_GLOBAL_STATE, entry.includeGlobalState()); |
522 |
| - builder.field(PARTIAL, entry.partial()); |
523 |
| - builder.field(STATE, entry.state()); |
524 |
| - builder.startArray(INDICES); |
525 |
| - { |
526 |
| - for (IndexId index : entry.indices()) { |
527 |
| - index.toXContent(builder, params); |
528 |
| - } |
529 |
| - } |
530 |
| - builder.endArray(); |
531 |
| - builder.humanReadableField(START_TIME_MILLIS, START_TIME, new TimeValue(entry.startTime())); |
532 |
| - builder.field(REPOSITORY_STATE_ID, entry.getRepositoryStateId()); |
533 |
| - builder.startArray(SHARDS); |
534 |
| - { |
535 |
| - for (ObjectObjectCursor<ShardId, ShardSnapshotStatus> shardEntry : entry.shards) { |
536 |
| - ShardId shardId = shardEntry.key; |
537 |
| - ShardSnapshotStatus status = shardEntry.value; |
538 |
| - builder.startObject(); |
539 |
| - { |
540 |
| - builder.field(INDEX, shardId.getIndex()); |
541 |
| - builder.field(SHARD, shardId.getId()); |
542 |
| - builder.field(STATE, status.state()); |
543 |
| - builder.field(NODE, status.nodeId()); |
544 |
| - } |
545 |
| - builder.endObject(); |
546 |
| - } |
547 |
| - } |
548 |
| - builder.endArray(); |
549 |
| - builder.endObject(); |
550 |
| - } |
551 |
| - |
552 | 560 | public enum ShardState {
|
553 | 561 | INIT((byte) 0, false, false),
|
554 | 562 | SUCCESS((byte) 2, true, false),
|
|
0 commit comments