From deb0d4c8c72f32b8fa7dc935688f5b5145d5c0d9 Mon Sep 17 00:00:00 2001 From: Martijn van Groningen Date: Tue, 30 Nov 2021 12:01:49 +0100 Subject: [PATCH] [7.16] Add replicated field to get data stream api response. (#81140) * [7.16] Add replicated field to get data stream api response. Backporting #80988 to 7.16 branch. Internally we already kept track of whether a data stream is replicated by CCR. It is part of the `DataStream` class. This just adds it to the xcontent serialization of the get data stream api response class. Relates to elastic/kibana#118899 * adjust to 7.16 reality --- .../client/indices/DataStream.java | 21 +++++++++++++++---- .../change-mappings-and-settings.asciidoc | 3 ++- .../indices/get-data-stream.asciidoc | 11 ++++++++-- .../core/action/GetDataStreamAction.java | 2 ++ .../test/data_stream/10_basic.yml | 6 ++++-- 5 files changed, 34 insertions(+), 9 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/DataStream.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/DataStream.java index 854e6673e780..c1dbf1ffe9bc 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/DataStream.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/DataStream.java @@ -34,6 +34,7 @@ public final class DataStream { String ilmPolicyName; @Nullable private final Map metadata; + private final boolean replicated; public DataStream( String name, @@ -45,7 +46,8 @@ public final class DataStream { @Nullable String ilmPolicyName, @Nullable Map metadata, boolean hidden, - boolean system + boolean system, + boolean replicated ) { this.name = name; this.timeStampField = timeStampField; @@ -57,6 +59,7 @@ public final class DataStream { this.metadata = metadata; this.hidden = hidden; this.system = system; + this.replicated = replicated; } public String getName() { @@ -99,6 +102,10 @@ public final class DataStream { return system; } + public boolean isReplicated() { + return replicated; + } + public static final ParseField NAME_FIELD = new ParseField("name"); public static final ParseField TIMESTAMP_FIELD_FIELD = new ParseField("timestamp_field"); public static final ParseField INDICES_FIELD = new ParseField("indices"); @@ -109,6 +116,7 @@ public final class DataStream { public static final ParseField METADATA_FIELD = new ParseField("_meta"); public static final ParseField HIDDEN_FIELD = new ParseField("hidden"); public static final ParseField SYSTEM_FIELD = new ParseField("system"); + public static final ParseField REPLICATED = new ParseField("replicated"); @SuppressWarnings("unchecked") private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>("data_stream", args -> { @@ -123,6 +131,7 @@ public final class DataStream { Map metadata = (Map) args[7]; boolean hidden = args[8] != null && (boolean) args[8]; boolean system = args[9] != null && (boolean) args[9]; + boolean replicated = args[10] != null && (boolean) args[10]; return new DataStream( dataStreamName, timeStampField, @@ -133,7 +142,8 @@ public final class DataStream { ilmPolicy, metadata, hidden, - system + system, + replicated ); }); @@ -148,6 +158,7 @@ public final class DataStream { PARSER.declareObject(ConstructingObjectParser.optionalConstructorArg(), (p, c) -> p.map(), METADATA_FIELD); PARSER.declareBoolean(ConstructingObjectParser.optionalConstructorArg(), HIDDEN_FIELD); PARSER.declareBoolean(ConstructingObjectParser.optionalConstructorArg(), SYSTEM_FIELD); + PARSER.declareBoolean(ConstructingObjectParser.optionalConstructorArg(), REPLICATED); } public static DataStream fromXContent(XContentParser parser) throws IOException { @@ -168,7 +179,8 @@ public final class DataStream { && system == that.system && Objects.equals(indexTemplate, that.indexTemplate) && Objects.equals(ilmPolicyName, that.ilmPolicyName) - && Objects.equals(metadata, that.metadata); + && Objects.equals(metadata, that.metadata) + && replicated == that.replicated; } @Override @@ -183,7 +195,8 @@ public final class DataStream { ilmPolicyName, metadata, hidden, - system + system, + replicated ); } } diff --git a/docs/reference/data-streams/change-mappings-and-settings.asciidoc b/docs/reference/data-streams/change-mappings-and-settings.asciidoc index 430f5d2bad0a..8ce5a06fbb4e 100644 --- a/docs/reference/data-streams/change-mappings-and-settings.asciidoc +++ b/docs/reference/data-streams/change-mappings-and-settings.asciidoc @@ -577,7 +577,8 @@ stream's oldest backing index. "status": "GREEN", "template": "my-data-stream-template", "hidden": false, - "system": false + "system": false, + "replicated": false } ] } diff --git a/docs/reference/indices/get-data-stream.asciidoc b/docs/reference/indices/get-data-stream.asciidoc index 850031a64b45..318691eb4d5a 100644 --- a/docs/reference/indices/get-data-stream.asciidoc +++ b/docs/reference/indices/get-data-stream.asciidoc @@ -207,6 +207,11 @@ use the <>. (Boolean) If `true`, the data stream is created and managed by an Elastic stack component and cannot be modified through normal user interaction. + +`replicated`:: +(Boolean) +If `true`, the data stream is created and managed by {ccr} and the local +cluster can not write into this data stream or change its mappings. ==== [[get-data-stream-api-example]] @@ -246,7 +251,8 @@ The API returns the following response: "template": "my-index-template", "ilm_policy": "my-lifecycle-policy", "hidden": false, - "system": false + "system": false, + "replicated": false }, { "name": "my-data-stream-two", @@ -267,7 +273,8 @@ The API returns the following response: "template": "my-index-template", "ilm_policy": "my-lifecycle-policy", "hidden": false, - "system": false + "system": false, + "replicated": false } ] } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/GetDataStreamAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/GetDataStreamAction.java index f35ca318835d..cdcd3e6ca9b9 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/GetDataStreamAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/GetDataStreamAction.java @@ -123,6 +123,7 @@ public class GetDataStreamAction extends ActionType