Skip to content

Commit ac74cb4

Browse files
committed
add support for the rollup index caps API (#3535)
* add support for the rollup index caps API * SkipVersion on RollupJobCrudTests
1 parent a7b71bd commit ac74cb4

File tree

14 files changed

+287
-3
lines changed

14 files changed

+287
-3
lines changed

src/CodeGeneration/ApiGenerator/ApiGenerator.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ public class ApiGenerator
5050
"xpack.security.has_privileges.json",
5151
"xpack.security.put_privilege.json",
5252
"xpack.security.put_privileges.json",
53-
"xpack.rollup.get_rollup_index_caps.json",
5453
};
5554

5655
public static void Generate(string downloadBranch, params string[] folders)

src/Elasticsearch.Net/Domain/RequestParameters/RequestParameters.Generated.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2474,6 +2474,11 @@ public partial class GetRollupCapabilitiesRequestParameters : RequestParameters<
24742474
{
24752475
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
24762476
}
2477+
///<summary>Request options for XpackRollupGetRollupIndexCaps<pre></pre></summary>
2478+
public partial class GetRollupIndexCapabilitiesRequestParameters : RequestParameters<GetRollupIndexCapabilitiesRequestParameters>
2479+
{
2480+
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
2481+
}
24772482
///<summary>Request options for XpackRollupPutJob<pre></pre></summary>
24782483
public partial class CreateRollupJobRequestParameters : RequestParameters<CreateRollupJobRequestParameters>
24792484
{

src/Elasticsearch.Net/ElasticLowLevelClient.Generated.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3622,6 +3622,16 @@ public TResponse XpackRollupGetRollupCaps<TResponse>(GetRollupCapabilitiesReques
36223622
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
36233623
public Task<TResponse> XpackRollupGetRollupCapsAsync<TResponse>(GetRollupCapabilitiesRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
36243624
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"_xpack/rollup/data/"), ctx, null, _params(requestParameters));
3625+
///<summary>GET on /{index}/_xpack/rollup/data <para></para></summary>
3626+
///<param name="index">The rollup index or index pattern to obtain rollup capabilities from.</param>
3627+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
3628+
public TResponse XpackRollupGetRollupIndexCaps<TResponse>(string index, GetRollupIndexCapabilitiesRequestParameters requestParameters = null)
3629+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(GET, Url($"{index.NotNull("index")}/_xpack/rollup/data"), null, _params(requestParameters));
3630+
///<summary>GET on /{index}/_xpack/rollup/data <para></para></summary>
3631+
///<param name="index">The rollup index or index pattern to obtain rollup capabilities from.</param>
3632+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
3633+
public Task<TResponse> XpackRollupGetRollupIndexCapsAsync<TResponse>(string index, GetRollupIndexCapabilitiesRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
3634+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"{index.NotNull("index")}/_xpack/rollup/data"), ctx, null, _params(requestParameters));
36253635
///<summary>PUT on /_xpack/rollup/job/{id} <para></para></summary>
36263636
///<param name="id">The ID of the job to create</param>
36273637
///<param name="body">The job configuration</param>

src/Elasticsearch.Net/IElasticLowLevelClient.Generated.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2934,6 +2934,14 @@ public partial interface IElasticLowLevelClient
29342934
///<summary>GET on /_xpack/rollup/data/ <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/rollup-get-rollup-caps.html</para></summary>
29352935
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
29362936
Task<TResponse> XpackRollupGetRollupCapsAsync<TResponse>(GetRollupCapabilitiesRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken)) where TResponse : class, IElasticsearchResponse, new();
2937+
///<summary>GET on /{index}/_xpack/rollup/data <para></para></summary>
2938+
///<param name="index">The rollup index or index pattern to obtain rollup capabilities from.</param>
2939+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
2940+
TResponse XpackRollupGetRollupIndexCaps<TResponse>(string index, GetRollupIndexCapabilitiesRequestParameters requestParameters = null) where TResponse : class, IElasticsearchResponse, new();
2941+
///<summary>GET on /{index}/_xpack/rollup/data <para></para></summary>
2942+
///<param name="index">The rollup index or index pattern to obtain rollup capabilities from.</param>
2943+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
2944+
Task<TResponse> XpackRollupGetRollupIndexCapsAsync<TResponse>(string index, GetRollupIndexCapabilitiesRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken)) where TResponse : class, IElasticsearchResponse, new();
29372945
///<summary>PUT on /_xpack/rollup/job/{id} <para></para></summary>
29382946
///<param name="id">The ID of the job to create</param>
29392947
///<param name="body">The job configuration</param>

src/Nest/XPack/RollUp/DeleteRollupJob/DeleteRollupJobResponse.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,12 @@ namespace Nest
55
[JsonObject]
66
public interface IDeleteRollupJobResponse : IAcknowledgedResponse { }
77

8-
public class DeleteRollupJobResponse : AcknowledgedResponseBase, IDeleteRollupJobResponse { }
8+
public class DeleteRollupJobResponse : AcknowledgedResponseBase, IDeleteRollupJobResponse
9+
{
10+
/// <summary>
11+
/// Checks whether the response returned a valid HTTP status code and that the delete is acknowledged
12+
/// in one go. See also <see cref="AcknowledgedResponseBase.Acknowledged"/>
13+
/// </summary>
14+
public override bool IsValid => base.IsValid && Acknowledged;
15+
}
916
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using System;
2+
using System.Threading;
3+
using System.Threading.Tasks;
4+
using Elasticsearch.Net;
5+
6+
namespace Nest
7+
{
8+
public partial interface IElasticClient
9+
{
10+
/// <summary>
11+
/// </summary>
12+
IGetRollupIndexCapabilitiesResponse GetRollupIndexCapabilities(
13+
IndexName index,
14+
Func<GetRollupIndexCapabilitiesDescriptor, IGetRollupIndexCapabilitiesRequest> selector = null
15+
);
16+
17+
/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
18+
IGetRollupIndexCapabilitiesResponse GetRollupIndexCapabilities(IGetRollupIndexCapabilitiesRequest request);
19+
20+
/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
21+
Task<IGetRollupIndexCapabilitiesResponse> GetRollupIndexCapabilitiesAsync(
22+
IndexName index,
23+
Func<GetRollupIndexCapabilitiesDescriptor, IGetRollupIndexCapabilitiesRequest> selector = null,
24+
CancellationToken cancellationToken = default
25+
);
26+
27+
/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
28+
Task<IGetRollupIndexCapabilitiesResponse> GetRollupIndexCapabilitiesAsync(IGetRollupIndexCapabilitiesRequest request,
29+
CancellationToken cancellationToken = default
30+
);
31+
}
32+
33+
public partial class ElasticClient
34+
{
35+
/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
36+
public IGetRollupIndexCapabilitiesResponse GetRollupIndexCapabilities(
37+
IndexName index,
38+
Func<GetRollupIndexCapabilitiesDescriptor, IGetRollupIndexCapabilitiesRequest> selector = null
39+
) =>
40+
GetRollupIndexCapabilities(selector.InvokeOrDefault(new GetRollupIndexCapabilitiesDescriptor(index)));
41+
42+
/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
43+
public IGetRollupIndexCapabilitiesResponse GetRollupIndexCapabilities(IGetRollupIndexCapabilitiesRequest request) =>
44+
Dispatcher.Dispatch<IGetRollupIndexCapabilitiesRequest, GetRollupIndexCapabilitiesRequestParameters, GetRollupIndexCapabilitiesResponse>(
45+
request,
46+
(p, d) => LowLevelDispatch.XpackRollupGetRollupIndexCapsDispatch<GetRollupIndexCapabilitiesResponse>(p)
47+
);
48+
49+
/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
50+
public Task<IGetRollupIndexCapabilitiesResponse> GetRollupIndexCapabilitiesAsync(
51+
IndexName index,
52+
Func<GetRollupIndexCapabilitiesDescriptor, IGetRollupIndexCapabilitiesRequest> selector = null,
53+
CancellationToken cancellationToken = default
54+
) =>
55+
GetRollupIndexCapabilitiesAsync(selector.InvokeOrDefault(new GetRollupIndexCapabilitiesDescriptor(index)), cancellationToken);
56+
57+
/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
58+
public Task<IGetRollupIndexCapabilitiesResponse> GetRollupIndexCapabilitiesAsync(IGetRollupIndexCapabilitiesRequest request,
59+
CancellationToken cancellationToken = default
60+
) =>
61+
Dispatcher
62+
.DispatchAsync<IGetRollupIndexCapabilitiesRequest, GetRollupIndexCapabilitiesRequestParameters, GetRollupIndexCapabilitiesResponse,
63+
IGetRollupIndexCapabilitiesResponse>(
64+
request,
65+
cancellationToken,
66+
(p, d, c) => LowLevelDispatch.XpackRollupGetRollupIndexCapsDispatchAsync<GetRollupIndexCapabilitiesResponse>(p, c)
67+
);
68+
}
69+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Nest
2+
{
3+
[MapsApi("xpack.rollup.get_rollup_index_caps.json")]
4+
public partial interface IGetRollupIndexCapabilitiesRequest { }
5+
6+
public partial class GetRollupIndexCapabilitiesRequest { }
7+
8+
public partial class GetRollupIndexCapabilitiesDescriptor { }
9+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq.Expressions;
4+
using Elasticsearch.Net;
5+
using Newtonsoft.Json;
6+
7+
namespace Nest
8+
{
9+
public interface IGetRollupIndexCapabilitiesResponse : IResponse
10+
{
11+
IReadOnlyDictionary<IndexName, RollupIndexCapabilities> Indices { get; }
12+
}
13+
14+
[JsonConverter(typeof(ResolvableDictionaryResponseJsonConverter<GetRollupIndexCapabilitiesResponse, IndexName, RollupIndexCapabilities>))]
15+
public class GetRollupIndexCapabilitiesResponse : DictionaryResponseBase<IndexName, RollupIndexCapabilities>, IGetRollupIndexCapabilitiesResponse
16+
{
17+
public IReadOnlyDictionary<IndexName, RollupIndexCapabilities> Indices => Self.BackingDictionary;
18+
}
19+
20+
public class RollupIndexCapabilities
21+
{
22+
[JsonProperty("rollup_jobs")]
23+
public IReadOnlyCollection<RollupIndexCapabilitiesJob> RollupJobs { get; internal set; }
24+
}
25+
26+
public class RollupIndexCapabilitiesJob
27+
{
28+
[JsonProperty("fields")]
29+
public RollupFieldsIndexCapabilitiesDictionary Fields { get; internal set; }
30+
31+
[JsonProperty("index_pattern")]
32+
public string IndexPattern { get; internal set; }
33+
34+
[JsonProperty("job_id")]
35+
public string JobId { get; internal set; }
36+
37+
[JsonProperty("rollup_index")]
38+
public string RollupIndex { get; internal set; }
39+
}
40+
41+
public class RollupFieldsIndexCapabilities : IsADictionaryBase<string, string> { }
42+
43+
[JsonConverter(typeof(Converter))]
44+
public class RollupFieldsIndexCapabilitiesDictionary : ResolvableDictionaryProxy<Field, IReadOnlyCollection<RollupFieldsIndexCapabilities>>
45+
{
46+
internal RollupFieldsIndexCapabilitiesDictionary(IConnectionConfigurationValues c,
47+
IReadOnlyDictionary<Field, IReadOnlyCollection<RollupFieldsIndexCapabilities>> b
48+
) : base(c, b) { }
49+
50+
public IReadOnlyCollection<RollupFieldsIndexCapabilities> Field<T>(Expression<Func<T, object>> selector) => this[selector];
51+
52+
internal class Converter
53+
: ResolvableDictionaryJsonConverterBase
54+
<RollupFieldsIndexCapabilitiesDictionary, Field, IReadOnlyCollection<RollupFieldsIndexCapabilities>>
55+
{
56+
protected override RollupFieldsIndexCapabilitiesDictionary Create(
57+
IConnectionSettingsValues s, Dictionary<Field, IReadOnlyCollection<RollupFieldsIndexCapabilities>> d
58+
) => new RollupFieldsIndexCapabilitiesDictionary(s, d);
59+
}
60+
}
61+
}

src/Nest/_Generated/_Descriptors.generated.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4466,6 +4466,24 @@ public GetRollupCapabilitiesDescriptor() : base(){}
44664466

44674467
// Request parameters
44684468

4469+
}
4470+
///<summary>descriptor for XpackRollupGetRollupIndexCaps <pre></pre></summary>
4471+
public partial class GetRollupIndexCapabilitiesDescriptor : RequestDescriptorBase<GetRollupIndexCapabilitiesDescriptor,GetRollupIndexCapabilitiesRequestParameters, IGetRollupIndexCapabilitiesRequest>, IGetRollupIndexCapabilitiesRequest
4472+
{
4473+
/// <summary>/{index}/_xpack/rollup/data</summary>
4474+
///<param name="index"> this parameter is required</param>
4475+
public GetRollupIndexCapabilitiesDescriptor(IndexName index) : base(r=>r.Required("index", index)){}
4476+
// values part of the url path
4477+
IndexName IGetRollupIndexCapabilitiesRequest.Index => Self.RouteValues.Get<IndexName>("index");
4478+
4479+
///<summary>The rollup index or index pattern to obtain rollup capabilities from.</summary>
4480+
public GetRollupIndexCapabilitiesDescriptor Index(IndexName index) => Assign(a=>a.RouteValues.Required("index", index));
4481+
4482+
///<summary>a shortcut into calling Index(typeof(TOther))</summary>
4483+
public GetRollupIndexCapabilitiesDescriptor Index<TOther>() where TOther : class => Assign(a=>a.RouteValues.Required("index", (IndexName)typeof(TOther)));
4484+
4485+
// Request parameters
4486+
44694487
}
44704488
///<summary>descriptor for XpackRollupPutJob <pre></pre></summary>
44714489
public partial class CreateRollupJobDescriptor<T> : RequestDescriptorBase<CreateRollupJobDescriptor<T>,CreateRollupJobRequestParameters, ICreateRollupJobRequest>, ICreateRollupJobRequest

src/Nest/_Generated/_LowLevelDispatch.generated.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3966,6 +3966,28 @@ internal partial class LowLevelDispatch
39663966
throw InvalidDispatch("XpackRollupGetRollupCaps", p, new [] { GET }, "/_xpack/rollup/data/{index}", "/_xpack/rollup/data/");
39673967
}
39683968

3969+
internal TResponse XpackRollupGetRollupIndexCapsDispatch<TResponse>(IRequest<GetRollupIndexCapabilitiesRequestParameters> p) where TResponse : class, IElasticsearchResponse, new()
3970+
{
3971+
switch(p.HttpMethod)
3972+
{
3973+
case GET:
3974+
if (AllSetNoFallback(p.RouteValues.Index)) return _lowLevel.XpackRollupGetRollupIndexCaps<TResponse>(p.RouteValues.Index,p.RequestParameters);
3975+
break;
3976+
}
3977+
throw InvalidDispatch("XpackRollupGetRollupIndexCaps", p, new [] { GET }, "/{index}/_xpack/rollup/data");
3978+
}
3979+
3980+
internal Task<TResponse> XpackRollupGetRollupIndexCapsDispatchAsync<TResponse>(IRequest<GetRollupIndexCapabilitiesRequestParameters> p, CancellationToken ct) where TResponse : class, IElasticsearchResponse, new()
3981+
{
3982+
switch(p.HttpMethod)
3983+
{
3984+
case GET:
3985+
if (AllSetNoFallback(p.RouteValues.Index)) return _lowLevel.XpackRollupGetRollupIndexCapsAsync<TResponse>(p.RouteValues.Index,p.RequestParameters,ct);
3986+
break;
3987+
}
3988+
throw InvalidDispatch("XpackRollupGetRollupIndexCaps", p, new [] { GET }, "/{index}/_xpack/rollup/data");
3989+
}
3990+
39693991
internal TResponse XpackRollupPutJobDispatch<TResponse>(IRequest<CreateRollupJobRequestParameters> p,SerializableData<ICreateRollupJobRequest> body) where TResponse : class, IElasticsearchResponse, new()
39703992
{
39713993
switch(p.HttpMethod)

src/Nest/_Generated/_Requests.generated.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3207,6 +3207,23 @@ public GetRollupCapabilitiesRequest() : base(){}
32073207
// Request parameters
32083208
}
32093209
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
3210+
public partial interface IGetRollupIndexCapabilitiesRequest : IRequest<GetRollupIndexCapabilitiesRequestParameters>
3211+
{
3212+
IndexName Index { get; }
3213+
}
3214+
///<summary>Request parameters for XpackRollupGetRollupIndexCaps <pre></pre></summary>
3215+
public partial class GetRollupIndexCapabilitiesRequest : PlainRequestBase<GetRollupIndexCapabilitiesRequestParameters>, IGetRollupIndexCapabilitiesRequest
3216+
{
3217+
protected IGetRollupIndexCapabilitiesRequest Self => this;
3218+
///<summary>/{index}/_xpack/rollup/data</summary>
3219+
///<param name="index">this parameter is required</param>
3220+
public GetRollupIndexCapabilitiesRequest(IndexName index) : base(r=>r.Required("index", index)){}
3221+
// values part of the url path
3222+
IndexName IGetRollupIndexCapabilitiesRequest.Index => Self.RouteValues.Get<IndexName>("index");
3223+
3224+
// Request parameters
3225+
}
3226+
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
32103227
public partial interface IGetRollupJobRequest : IRequest<GetRollupJobRequestParameters>
32113228
{
32123229
Id Id { get; }

src/Tests/Tests/XPack/Rollup/GetRollupCapabilities/GetRollupCapabilitiesTests.cs renamed to src/Tests/Tests/XPack/Rollup/GetRollupCapabilities/GetRollupCapabilitiesUrlTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace Tests.XPack.Rollup.GetRollupCapabilities
88
{
9-
public class GetRollupCapabilitiesTests : UrlTestsBase
9+
public class GetRollupCapabilitiesUrlTests : UrlTestsBase
1010
{
1111
[U] public override async Task Urls()
1212
{
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using System.Threading.Tasks;
2+
using Elastic.Xunit.XunitPlumbing;
3+
using Nest;
4+
using Tests.Framework;
5+
using static Tests.Framework.UrlTester;
6+
7+
namespace Tests.XPack.Rollup.GetRollupIndexCapabilities
8+
{
9+
public class GetRollupIndexCapabilitiesUrlTests : UrlTestsBase
10+
{
11+
[U] public override async Task Urls()
12+
{
13+
const string index = "rollup-index";
14+
await GET($"{index}/_xpack/rollup/data")
15+
.Fluent(c => c.GetRollupIndexCapabilities(index))
16+
.Request(c => c.GetRollupIndexCapabilities(new GetRollupIndexCapabilitiesRequest(index)))
17+
.FluentAsync(c => c.GetRollupIndexCapabilitiesAsync(index))
18+
.RequestAsync(c => c.GetRollupIndexCapabilitiesAsync(new GetRollupIndexCapabilitiesRequest(index)));
19+
}
20+
}
21+
}

src/Tests/Tests/XPack/Rollup/RollupJobCrudTests.cs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
namespace Tests.XPack.Rollup
1515
{
16+
[SkipVersion("6.5.0", "")]
1617
public class RollupJobCrudTests
1718
: CrudTestBase<TimeSeriesCluster, ICreateRollupJobResponse, IGetRollupJobResponse, ICreateRollupJobResponse, IDeleteRollupJobResponse>
1819
{
@@ -130,6 +131,18 @@ protected override LazyResponses Read() => Calls<GetRollupJobDescriptor, GetRoll
130131
(s, c, r) => c.GetRollupCapabilitiesAsync(r)
131132
)
132133
},
134+
{
135+
"rollup_index_caps", () =>
136+
Calls<GetRollupIndexCapabilitiesDescriptor, GetRollupIndexCapabilitiesRequest, IGetRollupIndexCapabilitiesRequest, IGetRollupIndexCapabilitiesResponse
137+
>(
138+
IndexCapsInitializer,
139+
IndexCapsFluent,
140+
(s, c, f) => c.GetRollupIndexCapabilities(CreateRollupName(s), f),
141+
(s, c, f) => c.GetRollupIndexCapabilitiesAsync(CreateRollupName(s), f),
142+
(s, c, r) => c.GetRollupIndexCapabilities(r),
143+
(s, c, r) => c.GetRollupIndexCapabilitiesAsync(r)
144+
)
145+
},
133146
{
134147
"stop", () => Calls<StopRollupJobDescriptor, StopRollupJobRequest, IStopRollupJobRequest, IStopRollupJobResponse>(
135148
StopInitializer,
@@ -150,6 +163,10 @@ protected override LazyResponses Read() => Calls<GetRollupJobDescriptor, GetRoll
150163

151164
protected IStopRollupJobRequest StopFluent(string role, StopRollupJobDescriptor d) => d;
152165

166+
protected GetRollupIndexCapabilitiesRequest IndexCapsInitializer(string role) => new GetRollupIndexCapabilitiesRequest(CreateRollupName(role));
167+
168+
protected IGetRollupIndexCapabilitiesRequest IndexCapsFluent(string role, GetRollupIndexCapabilitiesDescriptor d) => d;
169+
153170
protected GetRollupCapabilitiesRequest CapsInitializer(string role) => new GetRollupCapabilitiesRequest(TimeSeriesSeeder.IndicesWildCard);
154171

155172
protected IGetRollupCapabilitiesRequest CapsFluent(string role, GetRollupCapabilitiesDescriptor d) =>
@@ -244,6 +261,27 @@ await AssertOnAfterCreateResponse<IGetRollupCapabilitiesResponse>("rollup_caps",
244261
c.Should().ContainKey("agg");
245262
});
246263

264+
[I] public async Task GetRollupIndexCapabilities() =>
265+
await AssertOnAfterCreateResponse<IGetRollupIndexCapabilitiesResponse>("rollup_index_caps", r =>
266+
{
267+
r.IsValid.Should().BeTrue();
268+
r.Indices.Should().NotBeEmpty().And.HaveCount(1);
269+
270+
var indexCaps = r.Indices.First().Value;
271+
indexCaps.Should().NotBeNull();
272+
indexCaps.RollupJobs.Should().NotBeEmpty();
273+
var job = indexCaps.RollupJobs.First();
274+
job.JobId.Should().NotBeNullOrWhiteSpace();
275+
job.RollupIndex.Should().NotBeNullOrWhiteSpace();
276+
job.IndexPattern.Should().Be(TimeSeriesSeeder.IndicesWildCard);
277+
job.Fields.Should().NotBeEmpty();
278+
var capabilities = job.Fields.Field<Log>(p => p.Temperature);
279+
capabilities.Should().NotBeEmpty();
280+
foreach (var c in capabilities)
281+
c.Should().ContainKey("agg");
282+
});
283+
284+
247285

248286
// ignored because we mark SupportsUpdates => false
249287
protected override LazyResponses Update() => null;

0 commit comments

Comments
 (0)