From 75e6921f0a713d8cd03b56acd0a0c84f18048565 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Wed, 20 Dec 2017 12:02:09 +1100 Subject: [PATCH 1/3] Add version to PutTemplateRequest Closes #2880 --- .../PutIndexTemplateRequest.cs | 12 +++++++++++- .../PutIndexTemplateApiTests.cs | 18 +++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/Nest/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateRequest.cs b/src/Nest/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateRequest.cs index 9499c412061..25cac7ffaab 100644 --- a/src/Nest/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateRequest.cs +++ b/src/Nest/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateRequest.cs @@ -1,11 +1,14 @@ using System; using System.Collections.Generic; using System.Linq; +using Newtonsoft.Json; namespace Nest { public partial interface IPutIndexTemplateRequest : ITemplateMapping { + [JsonProperty("version")] + int? Version { get; set; } } public partial class PutIndexTemplateRequest @@ -14,6 +17,8 @@ public partial class PutIndexTemplateRequest public int? Order { get; set; } + public int? Version { get; set; } + public IIndexSettings Settings { get; set; } public IMappings Mappings { get; set; } @@ -26,17 +31,22 @@ public partial class PutIndexTemplateDescriptor { int? ITemplateMapping.Order { get; set; } + int? IPutIndexTemplateRequest.Version { get; set; } + IIndexSettings ITemplateMapping.Settings { get; set; } IMappings ITemplateMapping.Mappings { get; set; } IAliases ITemplateMapping.Aliases { get; set; } - IReadOnlyCollection ITemplateMapping.IndexPatterns {get;set;} + IReadOnlyCollection ITemplateMapping.IndexPatterns { get; set; } public PutIndexTemplateDescriptor Order(int order) => Assign(a => a.Order = order); + public PutIndexTemplateDescriptor Version(int version) => Assign(a => a.Version = version); + public PutIndexTemplateDescriptor IndexPatterns(params string[] patterns)=> Assign(a => a.IndexPatterns = patterns); + public PutIndexTemplateDescriptor IndexPatterns(IEnumerable patterns)=> Assign(a => a.IndexPatterns = patterns?.ToArray()); public PutIndexTemplateDescriptor Settings(Func> settingsSelector) => diff --git a/src/Tests/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateApiTests.cs b/src/Tests/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateApiTests.cs index 588bb67bd03..657b973811f 100644 --- a/src/Tests/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateApiTests.cs +++ b/src/Tests/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateApiTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Elasticsearch.Net; +using FluentAssertions; using Nest; using Tests.Framework; using Tests.Framework.Integration; @@ -10,7 +11,7 @@ namespace Tests.Indices.IndexSettings.IndexTemplates.PutIndexTemplate { public class PutIndexTemplateApiTests - : ApiTestBase + : ApiIntegrationTestBase { public PutIndexTemplateApiTests(WritableCluster cluster, EndpointUsage usage) : base(cluster, usage) { @@ -24,14 +25,15 @@ protected override LazyResponses ClientUsage() => Calls( ); protected override HttpMethod HttpMethod => HttpMethod.PUT; - protected override string UrlPath => $"/_template/{CallIsolatedValue}?create=false"; - protected override bool SupportsDeserialization => false; + protected override int ExpectStatusCode => 200; + protected override bool ExpectIsValid => true; protected override object ExpectJson { get; } = new { order = 1, + version = 2, index_patterns = new [] {"nestx-*" }, settings = new Dictionary { { "index.number_of_shards", 1 } }, mappings = new @@ -61,6 +63,7 @@ protected override LazyResponses ClientUsage() => Calls( protected override Func Fluent => d => d .Order(1) + .Version(2) .IndexPatterns("nestx-*") .Create(false) .Settings(p=>p.NumberOfShards(1)) @@ -80,9 +83,12 @@ protected override LazyResponses ClientUsage() => Calls( ) ); + + protected override PutIndexTemplateRequest Initializer => new PutIndexTemplateRequest(CallIsolatedValue) { Order = 1, + Version = 2, IndexPatterns = new[] { "nestx-*" }, Create = false, Settings = new Nest.IndexSettings @@ -110,5 +116,11 @@ protected override LazyResponses ClientUsage() => Calls( } } }; + + protected override void ExpectResponse(IPutIndexTemplateResponse response) + { + response.ShouldBeValid(); + response.Acknowledged.Should().BeTrue(); + } } } From 18d859d003b93f1c7b7b01149e02ccf9b6a9d93a Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Thu, 21 Dec 2017 13:55:28 +1100 Subject: [PATCH 2/3] Add Version to GetIndexTemplateRequest + integration tests --- .../GetIndexTemplate/TemplateMapping.cs | 5 +++ .../PutIndexTemplateRequest.cs | 4 +- .../GetIndexTemplateApiTests.cs | 44 ++++++++++++++++++- 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/Nest/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/TemplateMapping.cs b/src/Nest/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/TemplateMapping.cs index 7e4fec141be..5cf09c5d460 100644 --- a/src/Nest/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/TemplateMapping.cs +++ b/src/Nest/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/TemplateMapping.cs @@ -19,6 +19,9 @@ public interface ITemplateMapping [JsonProperty("aliases")] IAliases Aliases { get; set; } + + [JsonProperty("version")] + int? Version { get; set; } } public class TemplateMapping : ITemplateMapping @@ -32,5 +35,7 @@ public class TemplateMapping : ITemplateMapping public IMappings Mappings { get; set; } public IAliases Aliases { get; set; } + + public int? Version { get; set; } } } diff --git a/src/Nest/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateRequest.cs b/src/Nest/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateRequest.cs index 25cac7ffaab..54332c15886 100644 --- a/src/Nest/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateRequest.cs +++ b/src/Nest/Indices/IndexSettings/IndexTemplates/PutIndexTemplate/PutIndexTemplateRequest.cs @@ -7,8 +7,6 @@ namespace Nest { public partial interface IPutIndexTemplateRequest : ITemplateMapping { - [JsonProperty("version")] - int? Version { get; set; } } public partial class PutIndexTemplateRequest @@ -31,7 +29,7 @@ public partial class PutIndexTemplateDescriptor { int? ITemplateMapping.Order { get; set; } - int? IPutIndexTemplateRequest.Version { get; set; } + int? ITemplateMapping.Version { get; set; } IIndexSettings ITemplateMapping.Settings { get; set; } diff --git a/src/Tests/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/GetIndexTemplateApiTests.cs b/src/Tests/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/GetIndexTemplateApiTests.cs index de24042cef0..b4f5be8073f 100644 --- a/src/Tests/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/GetIndexTemplateApiTests.cs +++ b/src/Tests/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/GetIndexTemplateApiTests.cs @@ -1,5 +1,7 @@ using System; +using System.Linq; using Elasticsearch.Net; +using FluentAssertions; using Nest; using Tests.Framework; using Tests.Framework.Integration; @@ -9,7 +11,7 @@ namespace Tests.Indices.IndexSettings.IndexTemplates.GetIndexTemplate { public class GetIndexTemplateApiTests - : ApiTestBase + : ApiIntegrationTestBase { public GetIndexTemplateApiTests(WritableCluster cluster, EndpointUsage usage) : base(cluster, usage) { } protected override LazyResponses ClientUsage() => Calls( @@ -25,6 +27,46 @@ protected override LazyResponses ClientUsage() => Calls( protected override Func Fluent => d => d .Name(CallIsolatedValue); + protected override int ExpectStatusCode => 200; + + protected override bool ExpectIsValid => true; + protected override GetIndexTemplateRequest Initializer => new GetIndexTemplateRequest(CallIsolatedValue); + + protected override object ExpectJson => new object(); + + protected override void IntegrationSetup(IElasticClient client, CallUniqueValues values) + { + foreach (var callUniqueValue in values) + { + var putTemplateResponse = client.PutIndexTemplate(callUniqueValue.Value, d => + d.IndexPatterns("startingwiththis-*") + .Settings(s => s.NumberOfShards(2)) + .Version(1) + ); + + if (!putTemplateResponse.IsValid) + throw new Exception($"Problem putting index template for integration test: {putTemplateResponse.DebugInformation}"); + } + } + + protected override void ExpectResponse(IGetIndexTemplateResponse response) + { + response.ShouldBeValid(); + + response.TemplateMappings.Should().NotBeNull(); + response.TemplateMappings.Should().HaveCount(1); + + var responseTemplateMapping = response.TemplateMappings[CallIsolatedValue]; + + responseTemplateMapping.IndexPatterns.Should().NotBeNull(); + responseTemplateMapping.IndexPatterns.Should().HaveCount(1); + responseTemplateMapping.IndexPatterns.First().Should().Be("startingwiththis-*"); + + responseTemplateMapping.Version.Should().Be(1); + + responseTemplateMapping.Settings.Should().NotBeNull(); + responseTemplateMapping.Settings.NumberOfShards.Should().Be(2); + } } } From f3762dbcb936779a7c520358c95fb17a22b311c7 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Thu, 21 Dec 2017 14:26:26 +1100 Subject: [PATCH 3/3] PR comments --- .../IndexTemplates/GetIndexTemplate/GetIndexTemplateApiTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tests/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/GetIndexTemplateApiTests.cs b/src/Tests/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/GetIndexTemplateApiTests.cs index b4f5be8073f..2d8e6b769e2 100644 --- a/src/Tests/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/GetIndexTemplateApiTests.cs +++ b/src/Tests/Indices/IndexSettings/IndexTemplates/GetIndexTemplate/GetIndexTemplateApiTests.cs @@ -33,7 +33,7 @@ protected override LazyResponses ClientUsage() => Calls( protected override GetIndexTemplateRequest Initializer => new GetIndexTemplateRequest(CallIsolatedValue); - protected override object ExpectJson => new object(); + protected override object ExpectJson => null; protected override void IntegrationSetup(IElasticClient client, CallUniqueValues values) {