Skip to content

Commit 412b832

Browse files
codebrainrusscam
authored andcommitted
Map additional Recovery API response properties. (#4067)
This commit - Map additonal Recovery API response properties. - Add NullableDateTimeEpochMillisecondsFormatter
1 parent 898a5b9 commit 412b832

File tree

5 files changed

+90
-12
lines changed

5 files changed

+90
-12
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using System;
2+
using Elasticsearch.Net.Utf8Json;
3+
4+
namespace Nest
5+
{
6+
internal class NullableDateTimeEpochMillisecondsFormatter : IJsonFormatter<DateTime?>
7+
{
8+
public DateTime? Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
9+
{
10+
var token = reader.GetCurrentJsonToken();
11+
12+
switch (token)
13+
{
14+
case JsonToken.String:
15+
{
16+
var formatter = formatterResolver.GetFormatter<DateTime>();
17+
return formatter.Deserialize(ref reader, formatterResolver);
18+
}
19+
case JsonToken.Null:
20+
{
21+
reader.ReadNext();
22+
return null;
23+
}
24+
case JsonToken.Number:
25+
{
26+
var millisecondsSinceEpoch = reader.ReadDouble();
27+
var dateTimeOffset = DateTimeUtil.Epoch.AddMilliseconds(millisecondsSinceEpoch);
28+
return dateTimeOffset.DateTime;
29+
}
30+
default:
31+
throw new Exception($"Cannot deserialize {nameof(DateTime)} from token {token}");
32+
}
33+
}
34+
35+
public void Serialize(ref JsonWriter writer, DateTime? value, IJsonFormatterResolver formatterResolver)
36+
{
37+
if (value == null)
38+
{
39+
writer.WriteNull();
40+
return;
41+
}
42+
43+
var dateTimeDifference = (value.Value - DateTimeUtil.Epoch).TotalMilliseconds;
44+
writer.WriteInt64((long)dateTimeDifference);
45+
}
46+
}
47+
}

src/Nest/Indices/Monitoring/IndicesRecovery/RecoveryBytes.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ namespace Nest
44
{
55
public class RecoveryBytes
66
{
7-
[DataMember(Name ="percent")]
7+
[DataMember(Name = "percent")]
88
public string Percent { get; internal set; }
99

10-
[DataMember(Name ="recovered")]
10+
[DataMember(Name = "recovered")]
1111
public long Recovered { get; internal set; }
1212

13-
[DataMember(Name ="reused")]
13+
[DataMember(Name = "reused")]
1414
public long Reused { get; internal set; }
1515

16-
[DataMember(Name ="total")]
16+
[DataMember(Name = "total")]
1717
public long Total { get; internal set; }
1818
}
1919
}
Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,26 @@
1-
using System.Runtime.Serialization;
1+
using System;
2+
using System.Runtime.Serialization;
23

34
namespace Nest
45
{
56
public class RecoveryIndexStatus
67
{
7-
[DataMember(Name ="bytes")]
8-
public RecoveryBytes Bytes { get; internal set; }
8+
[Obsolete("Deprecated. Use Size instead. Will be removed in 8.0")]
9+
public RecoveryBytes Bytes => Size;
910

10-
[DataMember(Name ="files")]
11+
[DataMember(Name = "files")]
1112
public RecoveryFiles Files { get; internal set; }
1213

13-
[DataMember(Name ="total_time_in_millis")]
14+
[DataMember(Name = "size")]
15+
public RecoveryBytes Size { get; internal set; }
16+
17+
[DataMember(Name = "source_throttle_time_in_millis")]
18+
public long SourceThrottleTimeInMilliseconds { get; internal set; }
19+
20+
[DataMember(Name = "target_throttle_time_in_millis")]
21+
public long TargetThrottleTimeInMilliseconds { get; internal set; }
22+
23+
[DataMember(Name = "total_time_in_millis")]
1424
public long TotalTimeInMilliseconds { get; internal set; }
1525
}
1626
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System.Runtime.Serialization;
2+
3+
namespace Nest
4+
{
5+
public class RecoveryVerifyIndex
6+
{
7+
[DataMember(Name ="check_index_time_in_millis")]
8+
public long CheckIndexTimeInMilliseconds { get; internal set; }
9+
10+
[DataMember(Name ="total_time_in_millis")]
11+
public long TotalTimeInMilliseconds { get; internal set; }
12+
}
13+
}

src/Nest/Indices/Monitoring/IndicesRecovery/ShardRecovery.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Runtime.Serialization;
3+
using Elasticsearch.Net.Utf8Json;
34

45
namespace Nest
56
{
@@ -20,13 +21,17 @@ public class ShardRecovery
2021
[DataMember(Name ="stage")]
2122
public string Stage { get; internal set; }
2223

23-
[DataMember(Name ="start")]
24+
[Obsolete("Deprecated. Will be removed in 8.0")]
2425
public RecoveryStartStatus Start { get; internal set; }
2526

26-
[DataMember(Name ="start_time")]
27+
// TODO Rename property in 8.0
28+
[JsonFormatter(typeof(NullableDateTimeEpochMillisecondsFormatter))]
29+
[DataMember(Name ="start_time_in_millis")]
2730
public DateTime? StartTime { get; internal set; }
2831

29-
[DataMember(Name ="stop_time")]
32+
// TODO Rename property in 8.0
33+
[JsonFormatter(typeof(NullableDateTimeEpochMillisecondsFormatter))]
34+
[DataMember(Name ="stop_time_in_millis")]
3035
public DateTime? StopTime { get; internal set; }
3136

3237
[DataMember(Name ="target")]
@@ -40,5 +45,8 @@ public class ShardRecovery
4045

4146
[DataMember(Name ="type")]
4247
public string Type { get; internal set; }
48+
49+
[DataMember(Name ="verify_index")]
50+
public RecoveryVerifyIndex VerifyIndex { get; internal set; }
4351
}
4452
}

0 commit comments

Comments
 (0)