Skip to content

Commit b297e33

Browse files
committed
Add version to PutTemplateRequest (#2971)
1 parent 5632144 commit b297e33

File tree

4 files changed

+69
-2
lines changed

4 files changed

+69
-2
lines changed

src/Nest/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/TemplateMapping.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ public interface ITemplateMapping
1818

1919
[JsonProperty("aliases")]
2020
IAliases Aliases { get; set; }
21+
22+
[JsonProperty("version")]
23+
int? Version { get; set; }
2124
}
2225

2326
public class TemplateMapping : ITemplateMapping
@@ -31,5 +34,7 @@ public class TemplateMapping : ITemplateMapping
3134
public IMappings Mappings { get; set; }
3235

3336
public IAliases Aliases { get; set; }
37+
38+
public int? Version { get; set; }
3439
}
3540
}

src/Nest/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateRequest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using Newtonsoft.Json;
23

34
namespace Nest
45
{
@@ -12,6 +13,8 @@ public partial class PutIndexTemplateRequest
1213

1314
public int? Order { get; set; }
1415

16+
public int? Version { get; set; }
17+
1518
public IIndexSettings Settings { get; set; }
1619

1720
public IMappings Mappings { get; set; }
@@ -26,6 +29,8 @@ public partial class PutIndexTemplateDescriptor
2629

2730
int? ITemplateMapping.Order { get; set; }
2831

32+
int? ITemplateMapping.Version { get; set; }
33+
2934
IIndexSettings ITemplateMapping.Settings { get; set; }
3035

3136
IMappings ITemplateMapping.Mappings { get; set; }
@@ -34,6 +39,8 @@ public partial class PutIndexTemplateDescriptor
3439

3540
public PutIndexTemplateDescriptor Order(int order) => Assign(a => a.Order = order);
3641

42+
public PutIndexTemplateDescriptor Version(int version) => Assign(a => a.Version = version);
43+
3744
public PutIndexTemplateDescriptor Template(string template)=> Assign(a => a.Template = template);
3845

3946
public PutIndexTemplateDescriptor Settings(Func<IndexSettingsDescriptor, IPromise<IIndexSettings>> settingsSelector) =>

src/Tests/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/GetIndexTemplateApiTests.cs

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System;
2+
using System.Linq;
23
using Elasticsearch.Net;
4+
using FluentAssertions;
35
using Nest;
46
using Tests.Framework;
57
using Tests.Framework.Integration;
@@ -9,7 +11,7 @@
911
namespace Tests.Indices.IndexSettings.IndexTemplates.GetIndexTemplate
1012
{
1113
public class GetIndexTemplateApiTests
12-
: ApiTestBase<WritableCluster, IGetIndexTemplateResponse, IGetIndexTemplateRequest, GetIndexTemplateDescriptor, GetIndexTemplateRequest>
14+
: ApiIntegrationTestBase<WritableCluster, IGetIndexTemplateResponse, IGetIndexTemplateRequest, GetIndexTemplateDescriptor, GetIndexTemplateRequest>
1315
{
1416
public GetIndexTemplateApiTests(WritableCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
1517
protected override LazyResponses ClientUsage() => Calls(
@@ -25,6 +27,45 @@ protected override LazyResponses ClientUsage() => Calls(
2527
protected override Func<GetIndexTemplateDescriptor, IGetIndexTemplateRequest> Fluent => d => d
2628
.Name(CallIsolatedValue);
2729

30+
protected override int ExpectStatusCode => 200;
31+
32+
protected override bool ExpectIsValid => true;
33+
2834
protected override GetIndexTemplateRequest Initializer => new GetIndexTemplateRequest(CallIsolatedValue);
35+
36+
protected override object ExpectJson => null;
37+
38+
protected override void IntegrationSetup(IElasticClient client, CallUniqueValues values)
39+
{
40+
foreach (var callUniqueValue in values)
41+
{
42+
var putTemplateResponse = client.PutIndexTemplate(callUniqueValue.Value, d =>
43+
d.Template("nestx-*")
44+
.Settings(s => s.NumberOfShards(2))
45+
.Version(1)
46+
);
47+
48+
if (!putTemplateResponse.IsValid)
49+
throw new Exception($"Problem putting index template for integration test: {putTemplateResponse.DebugInformation}");
50+
}
51+
}
52+
53+
protected override void ExpectResponse(IGetIndexTemplateResponse response)
54+
{
55+
response.ShouldBeValid();
56+
57+
response.TemplateMappings.Should().NotBeNull();
58+
response.TemplateMappings.Should().HaveCount(1);
59+
60+
var responseTemplateMapping = response.TemplateMappings[CallIsolatedValue];
61+
62+
responseTemplateMapping.Template.Should().NotBeNull();
63+
responseTemplateMapping.Template.Should().Be("nestx-*");
64+
65+
responseTemplateMapping.Version.Should().Be(1);
66+
67+
responseTemplateMapping.Settings.Should().NotBeNull();
68+
responseTemplateMapping.Settings.NumberOfShards.Should().Be(2);
69+
}
2970
}
3071
}

src/Tests/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateApiTests.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using Elasticsearch.Net;
4+
using FluentAssertions;
45
using Nest;
56
using Tests.Framework;
67
using Tests.Framework.Integration;
@@ -10,7 +11,7 @@
1011
namespace Tests.Indices.IndexSettings.IndexTemplates.PutIndexTemplate
1112
{
1213
public class PutIndexTemplateApiTests
13-
: ApiTestBase<WritableCluster, IPutIndexTemplateResponse, IPutIndexTemplateRequest, PutIndexTemplateDescriptor, PutIndexTemplateRequest>
14+
: ApiIntegrationTestBase<WritableCluster, IPutIndexTemplateResponse, IPutIndexTemplateRequest, PutIndexTemplateDescriptor, PutIndexTemplateRequest>
1415
{
1516
public PutIndexTemplateApiTests(WritableCluster cluster, EndpointUsage usage) : base(cluster, usage)
1617
{
@@ -28,10 +29,13 @@ protected override LazyResponses ClientUsage() => Calls(
2829
protected override string UrlPath => $"/_template/{CallIsolatedValue}?create=false";
2930

3031
protected override bool SupportsDeserialization => false;
32+
protected override int ExpectStatusCode => 200;
33+
protected override bool ExpectIsValid => true;
3134

3235
protected override object ExpectJson { get; } = new
3336
{
3437
order = 1,
38+
version = 2,
3539
template = "nestx-*",
3640
settings = new Dictionary<string, object> { { "index.number_of_shards", 1 } },
3741
mappings = new
@@ -61,6 +65,7 @@ protected override LazyResponses ClientUsage() => Calls(
6165

6266
protected override Func<PutIndexTemplateDescriptor, IPutIndexTemplateRequest> Fluent => d => d
6367
.Order(1)
68+
.Version(2)
6469
.Template("nestx-*")
6570
.Create(false)
6671
.Settings(p=>p.NumberOfShards(1))
@@ -80,9 +85,12 @@ protected override LazyResponses ClientUsage() => Calls(
8085
)
8186
);
8287

88+
89+
8390
protected override PutIndexTemplateRequest Initializer => new PutIndexTemplateRequest(CallIsolatedValue)
8491
{
8592
Order = 1,
93+
Version = 2,
8694
Template = "nestx-*",
8795
Create = false,
8896
Settings = new Nest.IndexSettings
@@ -110,5 +118,11 @@ protected override LazyResponses ClientUsage() => Calls(
110118
}
111119
}
112120
};
121+
122+
protected override void ExpectResponse(IPutIndexTemplateResponse response)
123+
{
124+
response.ShouldBeValid();
125+
response.Acknowledged.Should().BeTrue();
126+
}
113127
}
114128
}

0 commit comments

Comments
 (0)