Skip to content

add support for the rollup index caps API #3535

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 25, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/CodeGeneration/ApiGenerator/ApiGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ public class ApiGenerator
"xpack.security.has_privileges.json",
"xpack.security.put_privilege.json",
"xpack.security.put_privileges.json",
"xpack.rollup.get_rollup_index_caps.json",
};

public static void Generate(string downloadBranch, params string[] folders)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2474,6 +2474,11 @@ public partial class GetRollupCapabilitiesRequestParameters : RequestParameters<
{
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
}
///<summary>Request options for XpackRollupGetRollupIndexCaps<pre></pre></summary>
public partial class GetRollupIndexCapabilitiesRequestParameters : RequestParameters<GetRollupIndexCapabilitiesRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
}
///<summary>Request options for XpackRollupPutJob<pre></pre></summary>
public partial class CreateRollupJobRequestParameters : RequestParameters<CreateRollupJobRequestParameters>
{
Expand Down
10 changes: 10 additions & 0 deletions src/Elasticsearch.Net/ElasticLowLevelClient.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3622,6 +3622,16 @@ public TResponse XpackRollupGetRollupCaps<TResponse>(GetRollupCapabilitiesReques
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> XpackRollupGetRollupCapsAsync<TResponse>(GetRollupCapabilitiesRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"_xpack/rollup/data/"), ctx, null, _params(requestParameters));
///<summary>GET on /{index}/_xpack/rollup/data <para></para></summary>
///<param name="index">The rollup index or index pattern to obtain rollup capabilities from.</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public TResponse XpackRollupGetRollupIndexCaps<TResponse>(string index, GetRollupIndexCapabilitiesRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(GET, Url($"{index.NotNull("index")}/_xpack/rollup/data"), null, _params(requestParameters));
///<summary>GET on /{index}/_xpack/rollup/data <para></para></summary>
///<param name="index">The rollup index or index pattern to obtain rollup capabilities from.</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> XpackRollupGetRollupIndexCapsAsync<TResponse>(string index, GetRollupIndexCapabilitiesRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"{index.NotNull("index")}/_xpack/rollup/data"), ctx, null, _params(requestParameters));
///<summary>PUT on /_xpack/rollup/job/{id} <para></para></summary>
///<param name="id">The ID of the job to create</param>
///<param name="body">The job configuration</param>
Expand Down
8 changes: 8 additions & 0 deletions src/Elasticsearch.Net/IElasticLowLevelClient.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2934,6 +2934,14 @@ public partial interface IElasticLowLevelClient
///<summary>GET on /_xpack/rollup/data/ <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/rollup-get-rollup-caps.html</para></summary>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
Task<TResponse> XpackRollupGetRollupCapsAsync<TResponse>(GetRollupCapabilitiesRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken)) where TResponse : class, IElasticsearchResponse, new();
///<summary>GET on /{index}/_xpack/rollup/data <para></para></summary>
///<param name="index">The rollup index or index pattern to obtain rollup capabilities from.</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
TResponse XpackRollupGetRollupIndexCaps<TResponse>(string index, GetRollupIndexCapabilitiesRequestParameters requestParameters = null) where TResponse : class, IElasticsearchResponse, new();
///<summary>GET on /{index}/_xpack/rollup/data <para></para></summary>
///<param name="index">The rollup index or index pattern to obtain rollup capabilities from.</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
Task<TResponse> XpackRollupGetRollupIndexCapsAsync<TResponse>(string index, GetRollupIndexCapabilitiesRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken)) where TResponse : class, IElasticsearchResponse, new();
///<summary>PUT on /_xpack/rollup/job/{id} <para></para></summary>
///<param name="id">The ID of the job to create</param>
///<param name="body">The job configuration</param>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,12 @@ namespace Nest
[JsonObject]
public interface IDeleteRollupJobResponse : IAcknowledgedResponse { }

public class DeleteRollupJobResponse : AcknowledgedResponseBase, IDeleteRollupJobResponse { }
public class DeleteRollupJobResponse : AcknowledgedResponseBase, IDeleteRollupJobResponse
{
/// <summary>
/// Checks whether the response returned a valid HTTP status code and that the delete is acknowledged
/// in one go. See also <see cref="AcknowledgedResponseBase.Acknowledged"/>
/// </summary>
public override bool IsValid => base.IsValid && Acknowledged;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Elasticsearch.Net;

namespace Nest
{
public partial interface IElasticClient
{
/// <summary>
/// </summary>
IGetRollupIndexCapabilitiesResponse GetRollupIndexCapabilities(
IndexName index,
Func<GetRollupIndexCapabilitiesDescriptor, IGetRollupIndexCapabilitiesRequest> selector = null
);

/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
IGetRollupIndexCapabilitiesResponse GetRollupIndexCapabilities(IGetRollupIndexCapabilitiesRequest request);

/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
Task<IGetRollupIndexCapabilitiesResponse> GetRollupIndexCapabilitiesAsync(
IndexName index,
Func<GetRollupIndexCapabilitiesDescriptor, IGetRollupIndexCapabilitiesRequest> selector = null,
CancellationToken cancellationToken = default
);

/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
Task<IGetRollupIndexCapabilitiesResponse> GetRollupIndexCapabilitiesAsync(IGetRollupIndexCapabilitiesRequest request,
CancellationToken cancellationToken = default
);
}

public partial class ElasticClient
{
/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
public IGetRollupIndexCapabilitiesResponse GetRollupIndexCapabilities(
IndexName index,
Func<GetRollupIndexCapabilitiesDescriptor, IGetRollupIndexCapabilitiesRequest> selector = null
) =>
GetRollupIndexCapabilities(selector.InvokeOrDefault(new GetRollupIndexCapabilitiesDescriptor(index)));

/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
public IGetRollupIndexCapabilitiesResponse GetRollupIndexCapabilities(IGetRollupIndexCapabilitiesRequest request) =>
Dispatcher.Dispatch<IGetRollupIndexCapabilitiesRequest, GetRollupIndexCapabilitiesRequestParameters, GetRollupIndexCapabilitiesResponse>(
request,
(p, d) => LowLevelDispatch.XpackRollupGetRollupIndexCapsDispatch<GetRollupIndexCapabilitiesResponse>(p)
);

/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
public Task<IGetRollupIndexCapabilitiesResponse> GetRollupIndexCapabilitiesAsync(
IndexName index,
Func<GetRollupIndexCapabilitiesDescriptor, IGetRollupIndexCapabilitiesRequest> selector = null,
CancellationToken cancellationToken = default
) =>
GetRollupIndexCapabilitiesAsync(selector.InvokeOrDefault(new GetRollupIndexCapabilitiesDescriptor(index)), cancellationToken);

/// <inheritdoc cref="GetRollupIndexCapabilities(IndexName, System.Func{Nest.GetRollupIndexCapabilitiesDescriptor,Nest.IGetRollupIndexCapabilitiesRequest})" />
public Task<IGetRollupIndexCapabilitiesResponse> GetRollupIndexCapabilitiesAsync(IGetRollupIndexCapabilitiesRequest request,
CancellationToken cancellationToken = default
) =>
Dispatcher
.DispatchAsync<IGetRollupIndexCapabilitiesRequest, GetRollupIndexCapabilitiesRequestParameters, GetRollupIndexCapabilitiesResponse,
IGetRollupIndexCapabilitiesResponse>(
request,
cancellationToken,
(p, d, c) => LowLevelDispatch.XpackRollupGetRollupIndexCapsDispatchAsync<GetRollupIndexCapabilitiesResponse>(p, c)
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Nest
{
[MapsApi("xpack.rollup.get_rollup_index_caps.json")]
public partial interface IGetRollupIndexCapabilitiesRequest { }

public partial class GetRollupIndexCapabilitiesRequest { }

public partial class GetRollupIndexCapabilitiesDescriptor { }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using Elasticsearch.Net;
using Newtonsoft.Json;

namespace Nest
{
public interface IGetRollupIndexCapabilitiesResponse : IResponse
{
IReadOnlyDictionary<IndexName, RollupIndexCapabilities> Indices { get; }
}

[JsonConverter(typeof(ResolvableDictionaryResponseJsonConverter<GetRollupIndexCapabilitiesResponse, IndexName, RollupIndexCapabilities>))]
public class GetRollupIndexCapabilitiesResponse : DictionaryResponseBase<IndexName, RollupIndexCapabilities>, IGetRollupIndexCapabilitiesResponse
{
public IReadOnlyDictionary<IndexName, RollupIndexCapabilities> Indices => Self.BackingDictionary;
}

public class RollupIndexCapabilities
{
[JsonProperty("rollup_jobs")]
public IReadOnlyCollection<RollupIndexCapabilitiesJob> RollupJobs { get; internal set; }
}

public class RollupIndexCapabilitiesJob
{
[JsonProperty("fields")]
public RollupFieldsIndexCapabilitiesDictionary Fields { get; internal set; }

[JsonProperty("index_pattern")]
public string IndexPattern { get; internal set; }

[JsonProperty("job_id")]
public string JobId { get; internal set; }

[JsonProperty("rollup_index")]
public string RollupIndex { get; internal set; }
}

public class RollupFieldsIndexCapabilities : IsADictionaryBase<string, string> { }

[JsonConverter(typeof(Converter))]
public class RollupFieldsIndexCapabilitiesDictionary : ResolvableDictionaryProxy<Field, IReadOnlyCollection<RollupFieldsIndexCapabilities>>
{
internal RollupFieldsIndexCapabilitiesDictionary(IConnectionConfigurationValues c,
IReadOnlyDictionary<Field, IReadOnlyCollection<RollupFieldsIndexCapabilities>> b
) : base(c, b) { }

public IReadOnlyCollection<RollupFieldsIndexCapabilities> Field<T>(Expression<Func<T, object>> selector) => this[selector];

internal class Converter
: ResolvableDictionaryJsonConverterBase
<RollupFieldsIndexCapabilitiesDictionary, Field, IReadOnlyCollection<RollupFieldsIndexCapabilities>>
{
protected override RollupFieldsIndexCapabilitiesDictionary Create(
IConnectionSettingsValues s, Dictionary<Field, IReadOnlyCollection<RollupFieldsIndexCapabilities>> d
) => new RollupFieldsIndexCapabilitiesDictionary(s, d);
}
}
}
18 changes: 18 additions & 0 deletions src/Nest/_Generated/_Descriptors.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4466,6 +4466,24 @@ public GetRollupCapabilitiesDescriptor() : base(){}

// Request parameters

}
///<summary>descriptor for XpackRollupGetRollupIndexCaps <pre></pre></summary>
public partial class GetRollupIndexCapabilitiesDescriptor : RequestDescriptorBase<GetRollupIndexCapabilitiesDescriptor,GetRollupIndexCapabilitiesRequestParameters, IGetRollupIndexCapabilitiesRequest>, IGetRollupIndexCapabilitiesRequest
{
/// <summary>/{index}/_xpack/rollup/data</summary>
///<param name="index"> this parameter is required</param>
public GetRollupIndexCapabilitiesDescriptor(IndexName index) : base(r=>r.Required("index", index)){}
// values part of the url path
IndexName IGetRollupIndexCapabilitiesRequest.Index => Self.RouteValues.Get<IndexName>("index");

///<summary>The rollup index or index pattern to obtain rollup capabilities from.</summary>
public GetRollupIndexCapabilitiesDescriptor Index(IndexName index) => Assign(a=>a.RouteValues.Required("index", index));

///<summary>a shortcut into calling Index(typeof(TOther))</summary>
public GetRollupIndexCapabilitiesDescriptor Index<TOther>() where TOther : class => Assign(a=>a.RouteValues.Required("index", (IndexName)typeof(TOther)));

// Request parameters

}
///<summary>descriptor for XpackRollupPutJob <pre></pre></summary>
public partial class CreateRollupJobDescriptor<T> : RequestDescriptorBase<CreateRollupJobDescriptor<T>,CreateRollupJobRequestParameters, ICreateRollupJobRequest>, ICreateRollupJobRequest
Expand Down
22 changes: 22 additions & 0 deletions src/Nest/_Generated/_LowLevelDispatch.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3966,6 +3966,28 @@ internal partial class LowLevelDispatch
throw InvalidDispatch("XpackRollupGetRollupCaps", p, new [] { GET }, "/_xpack/rollup/data/{index}", "/_xpack/rollup/data/");
}

internal TResponse XpackRollupGetRollupIndexCapsDispatch<TResponse>(IRequest<GetRollupIndexCapabilitiesRequestParameters> p) where TResponse : class, IElasticsearchResponse, new()
{
switch(p.HttpMethod)
{
case GET:
if (AllSetNoFallback(p.RouteValues.Index)) return _lowLevel.XpackRollupGetRollupIndexCaps<TResponse>(p.RouteValues.Index,p.RequestParameters);
break;
}
throw InvalidDispatch("XpackRollupGetRollupIndexCaps", p, new [] { GET }, "/{index}/_xpack/rollup/data");
}

internal Task<TResponse> XpackRollupGetRollupIndexCapsDispatchAsync<TResponse>(IRequest<GetRollupIndexCapabilitiesRequestParameters> p, CancellationToken ct) where TResponse : class, IElasticsearchResponse, new()
{
switch(p.HttpMethod)
{
case GET:
if (AllSetNoFallback(p.RouteValues.Index)) return _lowLevel.XpackRollupGetRollupIndexCapsAsync<TResponse>(p.RouteValues.Index,p.RequestParameters,ct);
break;
}
throw InvalidDispatch("XpackRollupGetRollupIndexCaps", p, new [] { GET }, "/{index}/_xpack/rollup/data");
}

internal TResponse XpackRollupPutJobDispatch<TResponse>(IRequest<CreateRollupJobRequestParameters> p,SerializableData<ICreateRollupJobRequest> body) where TResponse : class, IElasticsearchResponse, new()
{
switch(p.HttpMethod)
Expand Down
17 changes: 17 additions & 0 deletions src/Nest/_Generated/_Requests.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3207,6 +3207,23 @@ public GetRollupCapabilitiesRequest() : base(){}
// Request parameters
}
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public partial interface IGetRollupIndexCapabilitiesRequest : IRequest<GetRollupIndexCapabilitiesRequestParameters>
{
IndexName Index { get; }
}
///<summary>Request parameters for XpackRollupGetRollupIndexCaps <pre></pre></summary>
public partial class GetRollupIndexCapabilitiesRequest : PlainRequestBase<GetRollupIndexCapabilitiesRequestParameters>, IGetRollupIndexCapabilitiesRequest
{
protected IGetRollupIndexCapabilitiesRequest Self => this;
///<summary>/{index}/_xpack/rollup/data</summary>
///<param name="index">this parameter is required</param>
public GetRollupIndexCapabilitiesRequest(IndexName index) : base(r=>r.Required("index", index)){}
// values part of the url path
IndexName IGetRollupIndexCapabilitiesRequest.Index => Self.RouteValues.Get<IndexName>("index");

// Request parameters
}
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public partial interface IGetRollupJobRequest : IRequest<GetRollupJobRequestParameters>
{
Id Id { get; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace Tests.XPack.Rollup.GetRollupCapabilities
{
public class GetRollupCapabilitiesTests : UrlTestsBase
public class GetRollupCapabilitiesUrlTests : UrlTestsBase
{
[U] public override async Task Urls()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System.Threading.Tasks;
using Elastic.Xunit.XunitPlumbing;
using Nest;
using Tests.Framework;
using static Tests.Framework.UrlTester;

namespace Tests.XPack.Rollup.GetRollupIndexCapabilities
{
public class GetRollupIndexCapabilitiesUrlTests : UrlTestsBase
{
[U] public override async Task Urls()
{
const string index = "rollup-index";
await GET($"{index}/_xpack/rollup/data")
.Fluent(c => c.GetRollupIndexCapabilities(index))
.Request(c => c.GetRollupIndexCapabilities(new GetRollupIndexCapabilitiesRequest(index)))
.FluentAsync(c => c.GetRollupIndexCapabilitiesAsync(index))
.RequestAsync(c => c.GetRollupIndexCapabilitiesAsync(new GetRollupIndexCapabilitiesRequest(index)));
}
}
}
38 changes: 38 additions & 0 deletions src/Tests/Tests/XPack/Rollup/RollupJobCrudTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

namespace Tests.XPack.Rollup
{
[SkipVersion("6.5.0", "")]
public class RollupJobCrudTests
: CrudTestBase<TimeSeriesCluster, ICreateRollupJobResponse, IGetRollupJobResponse, ICreateRollupJobResponse, IDeleteRollupJobResponse>
{
Expand Down Expand Up @@ -130,6 +131,18 @@ protected override LazyResponses Read() => Calls<GetRollupJobDescriptor, GetRoll
(s, c, r) => c.GetRollupCapabilitiesAsync(r)
)
},
{
"rollup_index_caps", () =>
Calls<GetRollupIndexCapabilitiesDescriptor, GetRollupIndexCapabilitiesRequest, IGetRollupIndexCapabilitiesRequest, IGetRollupIndexCapabilitiesResponse
>(
IndexCapsInitializer,
IndexCapsFluent,
(s, c, f) => c.GetRollupIndexCapabilities(CreateRollupName(s), f),
(s, c, f) => c.GetRollupIndexCapabilitiesAsync(CreateRollupName(s), f),
(s, c, r) => c.GetRollupIndexCapabilities(r),
(s, c, r) => c.GetRollupIndexCapabilitiesAsync(r)
)
},
{
"stop", () => Calls<StopRollupJobDescriptor, StopRollupJobRequest, IStopRollupJobRequest, IStopRollupJobResponse>(
StopInitializer,
Expand All @@ -150,6 +163,10 @@ protected override LazyResponses Read() => Calls<GetRollupJobDescriptor, GetRoll

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

protected GetRollupIndexCapabilitiesRequest IndexCapsInitializer(string role) => new GetRollupIndexCapabilitiesRequest(CreateRollupName(role));

protected IGetRollupIndexCapabilitiesRequest IndexCapsFluent(string role, GetRollupIndexCapabilitiesDescriptor d) => d;

protected GetRollupCapabilitiesRequest CapsInitializer(string role) => new GetRollupCapabilitiesRequest(TimeSeriesSeeder.IndicesWildCard);

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

[I] public async Task GetRollupIndexCapabilities() =>
await AssertOnAfterCreateResponse<IGetRollupIndexCapabilitiesResponse>("rollup_index_caps", r =>
{
r.IsValid.Should().BeTrue();
r.Indices.Should().NotBeEmpty().And.HaveCount(1);

var indexCaps = r.Indices.First().Value;
indexCaps.Should().NotBeNull();
indexCaps.RollupJobs.Should().NotBeEmpty();
var job = indexCaps.RollupJobs.First();
job.JobId.Should().NotBeNullOrWhiteSpace();
job.RollupIndex.Should().NotBeNullOrWhiteSpace();
job.IndexPattern.Should().Be(TimeSeriesSeeder.IndicesWildCard);
job.Fields.Should().NotBeEmpty();
var capabilities = job.Fields.Field<Log>(p => p.Temperature);
capabilities.Should().NotBeEmpty();
foreach (var c in capabilities)
c.Should().ContainKey("agg");
});



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