Removes multiple toXContent entry points for SnapshotInfo
SnapshotInfo had a toXContent and an externalToXContent, the former for writing snapshot info to the snapshot blob and the latter for writing the snapshot info to the APIs. This commit unifies writing x-content to one method, toXContent, which distinguishes which format to write the snapshot info in based on the Params parameter. In addition, it makes use of the already existing snapshot specific params found in the BlobStoreFormat. Closes #18494
This commit is contained in:
parent
b3a8c54928
commit
105aee08b3
|
@ -85,7 +85,7 @@ public class CreateSnapshotResponse extends ActionResponse implements ToXContent
|
||||||
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
||||||
if (snapshotInfo != null) {
|
if (snapshotInfo != null) {
|
||||||
builder.field("snapshot");
|
builder.field("snapshot");
|
||||||
snapshotInfo.toExternalXContent(builder, params);
|
snapshotInfo.toXContent(builder, params);
|
||||||
} else {
|
} else {
|
||||||
builder.field("accepted", true);
|
builder.field("accepted", true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class GetSnapshotsResponse extends ActionResponse implements ToXContent {
|
||||||
public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params params) throws IOException {
|
public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params params) throws IOException {
|
||||||
builder.startArray("snapshots");
|
builder.startArray("snapshots");
|
||||||
for (SnapshotInfo snapshotInfo : snapshots) {
|
for (SnapshotInfo snapshotInfo : snapshots) {
|
||||||
snapshotInfo.toExternalXContent(builder, params);
|
snapshotInfo.toXContent(builder, params);
|
||||||
}
|
}
|
||||||
builder.endArray();
|
builder.endArray();
|
||||||
return builder;
|
return builder;
|
||||||
|
|
|
@ -26,6 +26,7 @@ import org.elasticsearch.common.xcontent.FromXContentBuilder;
|
||||||
import org.elasticsearch.common.xcontent.ToXContent;
|
import org.elasticsearch.common.xcontent.ToXContent;
|
||||||
import org.elasticsearch.common.xcontent.XContentHelper;
|
import org.elasticsearch.common.xcontent.XContentHelper;
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
import org.elasticsearch.common.xcontent.XContentParser;
|
||||||
|
import org.elasticsearch.snapshots.SnapshotInfo;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -51,6 +52,8 @@ public abstract class BlobStoreFormat<T extends ToXContent> {
|
||||||
// when metadata is serialized certain elements of the metadata shouldn't be included into snapshot
|
// when metadata is serialized certain elements of the metadata shouldn't be included into snapshot
|
||||||
// exclusion of these elements is done by setting MetaData.CONTEXT_MODE_PARAM to MetaData.CONTEXT_MODE_SNAPSHOT
|
// exclusion of these elements is done by setting MetaData.CONTEXT_MODE_PARAM to MetaData.CONTEXT_MODE_SNAPSHOT
|
||||||
snapshotOnlyParams.put(MetaData.CONTEXT_MODE_PARAM, MetaData.CONTEXT_MODE_SNAPSHOT);
|
snapshotOnlyParams.put(MetaData.CONTEXT_MODE_PARAM, MetaData.CONTEXT_MODE_SNAPSHOT);
|
||||||
|
// serialize SnapshotInfo using the SNAPSHOT mode
|
||||||
|
snapshotOnlyParams.put(SnapshotInfo.CONTEXT_MODE_PARAM, SnapshotInfo.CONTEXT_MODE_SNAPSHOT);
|
||||||
SNAPSHOT_ONLY_FORMAT_PARAMS = new ToXContent.MapParams(snapshotOnlyParams);
|
SNAPSHOT_ONLY_FORMAT_PARAMS = new ToXContent.MapParams(snapshotOnlyParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,8 @@ import java.util.List;
|
||||||
public final class SnapshotInfo implements Comparable<SnapshotInfo>, ToXContent, FromXContentBuilder<SnapshotInfo>, Writeable {
|
public final class SnapshotInfo implements Comparable<SnapshotInfo>, ToXContent, FromXContentBuilder<SnapshotInfo>, Writeable {
|
||||||
|
|
||||||
public static final SnapshotInfo PROTO = new SnapshotInfo("", Collections.emptyList(), 0);
|
public static final SnapshotInfo PROTO = new SnapshotInfo("", Collections.emptyList(), 0);
|
||||||
|
public static final String CONTEXT_MODE_PARAM = "context_mode";
|
||||||
|
public static final String CONTEXT_MODE_SNAPSHOT = "SNAPSHOT";
|
||||||
private static final FormatDateTimeFormatter DATE_TIME_FORMATTER = Joda.forPattern("strictDateOptionalTime");
|
private static final FormatDateTimeFormatter DATE_TIME_FORMATTER = Joda.forPattern("strictDateOptionalTime");
|
||||||
private static final String SNAPSHOT = "snapshot";
|
private static final String SNAPSHOT = "snapshot";
|
||||||
private static final String INDICES = "indices";
|
private static final String INDICES = "indices";
|
||||||
|
@ -294,37 +296,12 @@ public final class SnapshotInfo implements Comparable<SnapshotInfo>, ToXContent,
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XContentBuilder toXContent(final XContentBuilder builder, final Params params) throws IOException {
|
public XContentBuilder toXContent(final XContentBuilder builder, final Params params) throws IOException {
|
||||||
builder.startObject(SNAPSHOT);
|
// write snapshot info to repository snapshot blob format
|
||||||
builder.field(NAME, name);
|
if (CONTEXT_MODE_SNAPSHOT.equals(params.param(CONTEXT_MODE_PARAM))) {
|
||||||
builder.field(VERSION_ID, version.id);
|
return toXContentSnapshot(builder, params);
|
||||||
builder.startArray(INDICES);
|
|
||||||
for (String index : indices) {
|
|
||||||
builder.value(index);
|
|
||||||
}
|
|
||||||
builder.endArray();
|
|
||||||
builder.field(STATE, state);
|
|
||||||
if (reason != null) {
|
|
||||||
builder.field(REASON, reason);
|
|
||||||
}
|
|
||||||
builder.field(START_TIME, startTime);
|
|
||||||
builder.field(END_TIME, endTime);
|
|
||||||
builder.field(TOTAL_SHARDS, totalShards);
|
|
||||||
builder.field(SUCCESSFUL_SHARDS, successfulShards);
|
|
||||||
builder.startArray(FAILURES);
|
|
||||||
for (SnapshotShardFailure shardFailure : shardFailures) {
|
|
||||||
builder.startObject();
|
|
||||||
shardFailure.toXContent(builder, params);
|
|
||||||
builder.endObject();
|
|
||||||
}
|
|
||||||
builder.endArray();
|
|
||||||
builder.endObject();
|
|
||||||
return builder;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// write snapshot info for the API and any other situations
|
||||||
* Produces the external X-content that is delivered through the REST layer.
|
|
||||||
*/
|
|
||||||
public XContentBuilder toExternalXContent(final XContentBuilder builder, final ToXContent.Params params) throws IOException {
|
|
||||||
builder.startObject();
|
builder.startObject();
|
||||||
builder.field(SNAPSHOT, name);
|
builder.field(SNAPSHOT, name);
|
||||||
builder.field(VERSION_ID, version.id);
|
builder.field(VERSION_ID, version.id);
|
||||||
|
@ -363,6 +340,34 @@ public final class SnapshotInfo implements Comparable<SnapshotInfo>, ToXContent,
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private XContentBuilder toXContentSnapshot(final XContentBuilder builder, final ToXContent.Params params) throws IOException {
|
||||||
|
builder.startObject(SNAPSHOT);
|
||||||
|
builder.field(NAME, name);
|
||||||
|
builder.field(VERSION_ID, version.id);
|
||||||
|
builder.startArray(INDICES);
|
||||||
|
for (String index : indices) {
|
||||||
|
builder.value(index);
|
||||||
|
}
|
||||||
|
builder.endArray();
|
||||||
|
builder.field(STATE, state);
|
||||||
|
if (reason != null) {
|
||||||
|
builder.field(REASON, reason);
|
||||||
|
}
|
||||||
|
builder.field(START_TIME, startTime);
|
||||||
|
builder.field(END_TIME, endTime);
|
||||||
|
builder.field(TOTAL_SHARDS, totalShards);
|
||||||
|
builder.field(SUCCESSFUL_SHARDS, successfulShards);
|
||||||
|
builder.startArray(FAILURES);
|
||||||
|
for (SnapshotShardFailure shardFailure : shardFailures) {
|
||||||
|
builder.startObject();
|
||||||
|
shardFailure.toXContent(builder, params);
|
||||||
|
builder.endObject();
|
||||||
|
}
|
||||||
|
builder.endArray();
|
||||||
|
builder.endObject();
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SnapshotInfo fromXContent(final XContentParser parser, final ParseFieldMatcher matcher) throws IOException {
|
public SnapshotInfo fromXContent(final XContentParser parser, final ParseFieldMatcher matcher) throws IOException {
|
||||||
return fromXContent(parser);
|
return fromXContent(parser);
|
||||||
|
|
Loading…
Reference in New Issue