Skip to content

Commit 4e322e5

Browse files
codebrainrusscam
authored andcommitted
Add the ability to require an ingest pipeline. (#4274)
1 parent f7ceee9 commit 4e322e5

File tree

4 files changed

+19
-0
lines changed

4 files changed

+19
-0
lines changed

src/Nest/IndexModules/IndexSettings/Settings/DynamicIndexSettings.cs

+13
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,13 @@ public interface IDynamicIndexSettings : IIsADictionary<string, object>
106106
/// The special pipeline name _none indicates no ingest pipeline should be run.`
107107
/// </summary>
108108
string DefaultPipeline { get; set; }
109+
110+
/// <summary>
111+
/// The required ingest node pipeline for this index. Index requests will fail if the required pipeline is set and the pipeline
112+
/// does not exist. The required pipeline can not be overridden with the pipeline parameter. A default pipeline and a required pipeline
113+
/// can not both be set. The special pipeline name _none indicates no ingest pipeline will run.
114+
/// </summary>
115+
string RequiredPipeline { get; set; }
109116
}
110117

111118
/// <inheritdoc />
@@ -179,6 +186,9 @@ public Time RefreshInterval
179186
/// <inheritdoc cref="IDynamicIndexSettings.DefaultPipeline" />
180187
public string DefaultPipeline { get; set; }
181188

189+
/// <inheritdoc cref="IDynamicIndexSettings.RequiredPipeline" />
190+
public string RequiredPipeline { get; set; }
191+
182192
/// <summary> Add any setting to the index </summary>
183193
public void Add(string setting, object value) => BackingDictionary[setting] = value;
184194
}
@@ -213,6 +223,9 @@ public TDescriptor Setting(string setting, object value)
213223
/// <inheritdoc cref="IDynamicIndexSettings.DefaultPipeline" />
214224
public TDescriptor DefaultPipeline(string defaultPipeline) => Assign(defaultPipeline, (a, v) => a.DefaultPipeline = v);
215225

226+
/// <inheritdoc cref="IDynamicIndexSettings.RequiredPipeline" />
227+
public TDescriptor RequiredPipeline(string requiredPipeline) => Assign(requiredPipeline, (a, v) => a.RequiredPipeline = v);
228+
216229
/// <inheritdoc cref="IDynamicIndexSettings.BlocksMetadata" />
217230
public TDescriptor BlocksMetadata(bool? blocksMetadata = true) => Assign(blocksMetadata, (a, v) => a.BlocksMetadata = v);
218231

src/Nest/IndexModules/IndexSettings/Settings/IndexSettingsFormatter.cs

+2
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ void Set(string knownKey, object newValue)
5151
Set(NumberOfReplicas, value.NumberOfReplicas);
5252
Set(RefreshInterval, value.RefreshInterval);
5353
Set(DefaultPipeline, value.DefaultPipeline);
54+
Set(RequiredPipeline, value.RequiredPipeline);
5455
Set(BlocksReadOnly, value.BlocksReadOnly);
5556
Set(BlocksRead, value.BlocksRead);
5657
Set(BlocksWrite, value.BlocksWrite);
@@ -179,6 +180,7 @@ private static void SetKnownIndexSettings(ref JsonReader reader, IJsonFormatterR
179180
Set<bool?>(s, settings, BlocksMetadata, v => s.BlocksMetadata = v, formatterResolver);
180181
Set<int?>(s, settings, Priority, v => s.Priority = v, formatterResolver);
181182
Set<string>(s, settings, DefaultPipeline, v => s.DefaultPipeline = v, formatterResolver);
183+
Set<string>(s, settings, RequiredPipeline, v => s.RequiredPipeline = v, formatterResolver);
182184

183185
Set<Union<int, RecoveryInitialShards>>(s, settings, UpdatableIndexSettings.RecoveryInitialShards,
184186
v => s.RecoveryInitialShards = v, formatterResolver);

src/Nest/IndexModules/IndexSettings/Settings/UpdatableIndexSettings.cs

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public static class UpdatableIndexSettings
5959
public const string RefreshInterval = "index.refresh_interval";
6060

6161
public const string DefaultPipeline = "index.default_pipeline";
62+
public const string RequiredPipeline = "index.required_pipeline";
6263

6364
public const string RequestsCacheEnable = "index.requests.cache.enable";
6465
public const string RoutingAllocationDisableAllocation = "index.routing.allocation.disable_allocation";

src/Tests/Tests/IndexModules/IndexSettings/Settings/TypedIndexSettings.cs

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public class Usage : PromiseUsageTestBase<IIndexSettings, IndexSettingsDescripto
2020
{ "index.number_of_replicas", 2 },
2121
{ "index.auto_expand_replicas", "1-3" },
2222
{ "index.default_pipeline", "a-default-pipeline" },
23+
{ "index.required_pipeline", "a-required-pipeline" },
2324
{ "index.refresh_interval", -1 },
2425
{ "index.blocks.read_only", true },
2526
{ "index.blocks.read", true },
@@ -46,6 +47,7 @@ public class Usage : PromiseUsageTestBase<IIndexSettings, IndexSettingsDescripto
4647
.NumberOfShards(1)
4748
.NumberOfReplicas(2)
4849
.DefaultPipeline("a-default-pipeline")
50+
.RequiredPipeline("a-required-pipeline")
4951
.AutoExpandReplicas("1-3")
5052
.BlocksMetadata()
5153
.BlocksRead()
@@ -74,6 +76,7 @@ public class Usage : PromiseUsageTestBase<IIndexSettings, IndexSettingsDescripto
7476
NumberOfShards = 1,
7577
NumberOfReplicas = 2,
7678
DefaultPipeline = "a-default-pipeline",
79+
RequiredPipeline = "a-required-pipeline",
7780
AutoExpandReplicas = "1-3",
7881
BlocksMetadata = true,
7982
BlocksRead = true,

0 commit comments

Comments
 (0)