Skip to content

Commit e4720d6

Browse files
committed
Add shards_acknowledged and indices results to CloseIndexResponse (#4066)
Relates: #4001 Relates: elastic/elasticsearch#39687 This commit adds shards_acknowledged and indices resuls to CloseIndexResponse. (cherry picked from commit 169b784)
1 parent 89dc651 commit e4720d6

File tree

2 files changed

+74
-2
lines changed

2 files changed

+74
-2
lines changed
Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,42 @@
1-
namespace Nest
1+
using System.Collections.Generic;
2+
using System.Runtime.Serialization;
3+
using Elasticsearch.Net;
4+
5+
namespace Nest
26
{
3-
public class CloseIndexResponse : AcknowledgedResponseBase { }
7+
public class CloseIndexResponse : AcknowledgedResponseBase
8+
{
9+
/// <summary>
10+
/// Individual index responses
11+
/// <para />
12+
/// Valid only for Elasticsearch 7.3.0+
13+
/// </summary>
14+
[DataMember(Name = "indices")]
15+
public IReadOnlyDictionary<string, CloseIndexResult> Indices { get; internal set; } = EmptyReadOnly<string, CloseIndexResult>.Dictionary;
16+
17+
/// <summary>
18+
/// Acknowledgement from shards
19+
/// <para />
20+
/// Valid only for Elasticsearch 7.2.0+
21+
/// </summary>
22+
[DataMember(Name = "shards_acknowledged")]
23+
public bool ShardsAcknowledged { get; internal set; }
24+
}
25+
26+
[DataContract]
27+
public class CloseIndexResult
28+
{
29+
[DataMember(Name = "closed")]
30+
public bool Closed { get; internal set; }
31+
32+
[DataMember(Name = "shards")]
33+
public IReadOnlyDictionary<string, CloseShardResult> Shards { get; internal set; } = EmptyReadOnly<string, CloseShardResult>.Dictionary;
34+
}
35+
36+
[DataContract]
37+
public class CloseShardResult
38+
{
39+
[DataMember(Name = "failures")]
40+
public IReadOnlyCollection<ShardFailure> Failures { get; internal set; } = EmptyReadOnly<ShardFailure>.Collection;
41+
}
442
}

src/Tests/Tests/Indices/IndexManagement/OpenCloseIndex/CloseIndex/CloseIndexApiTests.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using Elastic.Xunit.XunitPlumbing;
22
using Elasticsearch.Net;
3+
using FluentAssertions;
34
using Nest;
5+
using Tests.Core.Extensions;
46
using Tests.Core.ManagedElasticsearch.Clusters;
57
using Tests.Framework.EndpointTests;
68
using Tests.Framework.EndpointTests.TestState;
@@ -26,4 +28,36 @@ protected override LazyResponses ClientUsage() => Calls(
2628
(client, r) => client.Indices.CloseAsync(r)
2729
);
2830
}
31+
32+
[SkipVersion("<7.3.0", "individual index results only available in 7.3.0+")]
33+
public class CloseIndexWithShardsAcknowledgedApiTests
34+
: ApiIntegrationAgainstNewIndexTestBase<WritableCluster, CloseIndexResponse, ICloseIndexRequest, CloseIndexDescriptor, CloseIndexRequest>
35+
{
36+
public CloseIndexWithShardsAcknowledgedApiTests(WritableCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
37+
38+
protected override bool ExpectIsValid => true;
39+
protected override int ExpectStatusCode => 200;
40+
protected override HttpMethod HttpMethod => HttpMethod.POST;
41+
42+
protected override CloseIndexRequest Initializer => new CloseIndexRequest(CallIsolatedValue);
43+
protected override string UrlPath => $"/{CallIsolatedValue}/_close";
44+
45+
protected override LazyResponses ClientUsage() => Calls(
46+
(client, f) => client.Indices.Close(CallIsolatedValue),
47+
(client, f) => client.Indices.CloseAsync(CallIsolatedValue),
48+
(client, r) => client.Indices.Close(r),
49+
(client, r) => client.Indices.CloseAsync(r)
50+
);
51+
52+
protected override void ExpectResponse(CloseIndexResponse response)
53+
{
54+
response.ShouldBeValid();
55+
response.ShardsAcknowledged.Should().BeTrue();
56+
response.Indices.Should().NotBeNull().And.ContainKey(CallIsolatedValue);
57+
58+
var closeIndexResult = response.Indices[CallIsolatedValue];
59+
closeIndexResult.Closed.Should().BeTrue();
60+
closeIndexResult.Shards.Should().NotBeNull();
61+
}
62+
}
2963
}

0 commit comments

Comments
 (0)