Skip to content

Commit

Permalink
Implement cat.ml_data_frame_analytics (#4565)
Browse files Browse the repository at this point in the history
Implement cat.ml_data_frame_analytics
  • Loading branch information
codebrain authored Apr 17, 2020
1 parent b625979 commit 25fc219
Show file tree
Hide file tree
Showing 11 changed files with 322 additions and 8 deletions.
1 change: 0 additions & 1 deletion src/ApiGenerator/Configuration/CodeConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ public static class CodeConfiguration
"async_search.delete.json",
"async_search.get.json",
"async_search.submit.json",
"cat.ml_data_frame_analytics.json",
"cluster.delete_component_template.json",
"cluster.get_component_template.json",
"cluster.put_component_template.json",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -526,8 +526,8 @@ public bool? Verbose
}
}

///<summary>Request options for MlDataFrameAnalytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
public class MlDataFrameAnalyticsRequestParameters : RequestParameters<MlDataFrameAnalyticsRequestParameters>
///<summary>Request options for DataFrameAnalytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
public class CatDataFrameAnalyticsRequestParameters : RequestParameters<CatDataFrameAnalyticsRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
///<summary>Whether to ignore if a wildcard expression matches no configs. (This includes `_all` string or when no configs have been specified)</summary>
Expand Down
8 changes: 4 additions & 4 deletions src/Elasticsearch.Net/ElasticLowLevelClient.Cat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -178,23 +178,23 @@ public Task<TResponse> MasterAsync<TResponse>(CatMasterRequestParameters request
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(GET, "_cat/master", ctx, null, RequestParams(requestParameters));
///<summary>GET on /_cat/ml/data_frame/analytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public TResponse MlDataFrameAnalytics<TResponse>(MlDataFrameAnalyticsRequestParameters requestParameters = null)
public TResponse DataFrameAnalytics<TResponse>(CatDataFrameAnalyticsRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(GET, "_cat/ml/data_frame/analytics", null, RequestParams(requestParameters));
///<summary>GET on /_cat/ml/data_frame/analytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
[MapsApi("cat.ml_data_frame_analytics", "")]
public Task<TResponse> MlDataFrameAnalyticsAsync<TResponse>(MlDataFrameAnalyticsRequestParameters requestParameters = null, CancellationToken ctx = default)
public Task<TResponse> DataFrameAnalyticsAsync<TResponse>(CatDataFrameAnalyticsRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(GET, "_cat/ml/data_frame/analytics", ctx, null, RequestParams(requestParameters));
///<summary>GET on /_cat/ml/data_frame/analytics/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
///<param name = "id">The ID of the data frame analytics to fetch</param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public TResponse MlDataFrameAnalytics<TResponse>(string id, MlDataFrameAnalyticsRequestParameters requestParameters = null)
public TResponse DataFrameAnalytics<TResponse>(string id, CatDataFrameAnalyticsRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(GET, Url($"_cat/ml/data_frame/analytics/{id:id}"), null, RequestParams(requestParameters));
///<summary>GET on /_cat/ml/data_frame/analytics/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
///<param name = "id">The ID of the data frame analytics to fetch</param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
[MapsApi("cat.ml_data_frame_analytics", "id")]
public Task<TResponse> MlDataFrameAnalyticsAsync<TResponse>(string id, MlDataFrameAnalyticsRequestParameters requestParameters = null, CancellationToken ctx = default)
public Task<TResponse> DataFrameAnalyticsAsync<TResponse>(string id, CatDataFrameAnalyticsRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(GET, Url($"_cat/ml/data_frame/analytics/{id:id}"), ctx, null, RequestParams(requestParameters));
///<summary>GET on /_cat/ml/datafeeds <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
Expand Down
105 changes: 105 additions & 0 deletions src/Nest/Cat/CatDataFrameAnalytics/CatDataFrameAnalyticsRecord.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
using System.Runtime.Serialization;
using Elasticsearch.Net.Utf8Json;

namespace Nest
{
[DataContract]
public class CatDataFrameAnalyticsRecord : ICatRecord
{
/// <summary>
/// Contains messages relating to the selection of a node.
/// </summary>
[DataMember(Name="assignment_explanation")]
public string AssignmentExplanation { get; internal set; }

/// <summary>
/// (Default)The time when the data frame analytics job was created.
/// </summary>
[DataMember(Name="create_time")]
public string CreateTime { get; internal set; }

/// <summary>
/// A description of the job.
/// </summary>
[DataMember(Name="description")]
public string Description { get; internal set; }

/// <summary>
/// Name of the destination index.
/// </summary>
[DataMember(Name="dest_index")]
public string DestinationIndex { get; internal set; }

/// <summary>
/// Contains messages about the reason why a data frame analytics job failed.
/// </summary>
[DataMember(Name="failure_reason")]
public string FailureReason { get; internal set; }

/// <summary>
/// (Default) Identifier for the data frame analytics job.
/// </summary>
[DataMember(Name="id")]
public string Id { get; internal set; }

/// <summary>
/// (Default)The approximate maximum amount of memory resources that are permitted for the data frame analytics job.
/// </summary>
[DataMember(Name="model_memory_limit")]
public string ModelMemoryLimit { get; internal set; }

/// <summary>
/// The network address of the node that the data frame analytics job is assigned to.
/// </summary>
[DataMember(Name="node.address")]
public string NodeAddress { get; internal set; }

/// <summary>
/// The ephemeral ID of the node that the data frame analytics job is assigned to.
/// </summary>
[DataMember(Name="node.ephemeral_id")]
public string NodeEphemeralId { get; internal set; }

/// <summary>
/// The unique identifier of the node that the data frame analytics job is assigned to.
/// </summary>
[DataMember(Name="node.id")]
public string NodeId { get; internal set; }

/// <summary>
/// The name of the node that the data frame analytics job is assigned to.
/// </summary>
[DataMember(Name="node.name")]
public string NodeName { get; internal set; }

/// <summary>
/// The progress report of the data frame analytics job by phase.
/// </summary>
[DataMember(Name="progress")]
public string Progress { get; internal set; }

/// <summary>
/// Name of the source index.
/// </summary>
[DataMember(Name="source_index")]
public string SourceIndex { get; internal set; }

/// <summary>
/// (Default) Current state of the data frame analytics job.
/// </summary>
[DataMember(Name="state")]
public string State { get; internal set; }

/// <summary>
/// (Default) The type of analysis that the data frame analytics job performs.
/// </summary>
[DataMember(Name="type")]
public string Type { get; internal set; }

/// <summary>
/// The Elasticsearch version number in which the data frame analytics job was created.
/// </summary>
[DataMember(Name="version")]
public string Version { get; internal set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Nest
{
[MapsApi("cat.ml_data_frame_analytics.json")]
public partial interface ICatDataFrameAnalyticsRequest { }

public partial class CatDataFrameAnalyticsRequest { }

public partial class CatDataFrameAnalyticsDescriptor { }
}
36 changes: 36 additions & 0 deletions src/Nest/Descriptors.Cat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,42 @@ public partial class CatMasterDescriptor : RequestDescriptorBase<CatMasterDescri
public CatMasterDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
}

///<summary>Descriptor for DataFrameAnalytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
public partial class CatDataFrameAnalyticsDescriptor : RequestDescriptorBase<CatDataFrameAnalyticsDescriptor, CatDataFrameAnalyticsRequestParameters, ICatDataFrameAnalyticsRequest>, ICatDataFrameAnalyticsRequest
{
internal override ApiUrls ApiUrls => ApiUrlsLookups.CatDataFrameAnalytics;
///<summary>/_cat/ml/data_frame/analytics</summary>
public CatDataFrameAnalyticsDescriptor(): base()
{
}

///<summary>/_cat/ml/data_frame/analytics/{id}</summary>
///<param name = "id">Optional, accepts null</param>
public CatDataFrameAnalyticsDescriptor(Id id): base(r => r.Optional("id", id))
{
}

// values part of the url path
Id ICatDataFrameAnalyticsRequest.Id => Self.RouteValues.Get<Id>("id");
///<summary>The ID of the data frame analytics to fetch</summary>
public CatDataFrameAnalyticsDescriptor Id(Id id) => Assign(id, (a, v) => a.RouteValues.Optional("id", v));
// Request parameters
///<summary>Whether to ignore if a wildcard expression matches no configs. (This includes `_all` string or when no configs have been specified)</summary>
public CatDataFrameAnalyticsDescriptor AllowNoMatch(bool? allownomatch = true) => Qs("allow_no_match", allownomatch);
///<summary>The unit in which to display byte values</summary>
public CatDataFrameAnalyticsDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
///<summary>a short version of the Accept header, e.g. json, yaml</summary>
public CatDataFrameAnalyticsDescriptor Format(string format) => Qs("format", format);
///<summary>Comma-separated list of column names to display</summary>
public CatDataFrameAnalyticsDescriptor Headers(params string[] headers) => Qs("h", headers);
///<summary>Return help information</summary>
public CatDataFrameAnalyticsDescriptor Help(bool? help = true) => Qs("help", help);
///<summary>Comma-separated list of column names or column aliases to sort by</summary>
public CatDataFrameAnalyticsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
///<summary>Verbose mode. Display column headers</summary>
public CatDataFrameAnalyticsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
}

///<summary>Descriptor for Datafeeds <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html</para></summary>
public partial class CatDatafeedsDescriptor : RequestDescriptorBase<CatDatafeedsDescriptor, CatDatafeedsRequestParameters, ICatDatafeedsRequest>, ICatDatafeedsRequest
{
Expand Down
24 changes: 24 additions & 0 deletions src/Nest/ElasticClient.Cat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,30 @@ internal CatNamespace(ElasticClient client): base(client)
/// </summary>
public Task<CatResponse<CatMasterRecord>> MasterAsync(ICatMasterRequest request, CancellationToken ct = default) => DoCatAsync<ICatMasterRequest, CatMasterRequestParameters, CatMasterRecord>(request, ct);
/// <summary>
/// <c>GET</c> request to the <c>cat.ml_data_frame_analytics</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</a>
/// </summary>
public CatResponse<CatDataFrameAnalyticsRecord> DataFrameAnalytics(Func<CatDataFrameAnalyticsDescriptor, ICatDataFrameAnalyticsRequest> selector = null) => DataFrameAnalytics(selector.InvokeOrDefault(new CatDataFrameAnalyticsDescriptor()));
/// <summary>
/// <c>GET</c> request to the <c>cat.ml_data_frame_analytics</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</a>
/// </summary>
public Task<CatResponse<CatDataFrameAnalyticsRecord>> DataFrameAnalyticsAsync(Func<CatDataFrameAnalyticsDescriptor, ICatDataFrameAnalyticsRequest> selector = null, CancellationToken ct = default) => DataFrameAnalyticsAsync(selector.InvokeOrDefault(new CatDataFrameAnalyticsDescriptor()), ct);
/// <summary>
/// <c>GET</c> request to the <c>cat.ml_data_frame_analytics</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</a>
/// </summary>
public CatResponse<CatDataFrameAnalyticsRecord> DataFrameAnalytics(ICatDataFrameAnalyticsRequest request) => DoCat<ICatDataFrameAnalyticsRequest, CatDataFrameAnalyticsRequestParameters, CatDataFrameAnalyticsRecord>(request);
/// <summary>
/// <c>GET</c> request to the <c>cat.ml_data_frame_analytics</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</a>
/// </summary>
public Task<CatResponse<CatDataFrameAnalyticsRecord>> DataFrameAnalyticsAsync(ICatDataFrameAnalyticsRequest request, CancellationToken ct = default) => DoCatAsync<ICatDataFrameAnalyticsRequest, CatDataFrameAnalyticsRequestParameters, CatDataFrameAnalyticsRecord>(request, ct);
/// <summary>
/// <c>GET</c> request to the <c>cat.ml_datafeeds</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html</a>
Expand Down
84 changes: 84 additions & 0 deletions src/Nest/Requests.Cat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,90 @@ public bool? Verbose
}
}

[InterfaceDataContract]
public partial interface ICatDataFrameAnalyticsRequest : IRequest<CatDataFrameAnalyticsRequestParameters>
{
[IgnoreDataMember]
Id Id
{
get;
}
}

///<summary>Request for DataFrameAnalytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
public partial class CatDataFrameAnalyticsRequest : PlainRequestBase<CatDataFrameAnalyticsRequestParameters>, ICatDataFrameAnalyticsRequest
{
protected ICatDataFrameAnalyticsRequest Self => this;
internal override ApiUrls ApiUrls => ApiUrlsLookups.CatDataFrameAnalytics;
///<summary>/_cat/ml/data_frame/analytics</summary>
public CatDataFrameAnalyticsRequest(): base()
{
}

///<summary>/_cat/ml/data_frame/analytics/{id}</summary>
///<param name = "id">Optional, accepts null</param>
public CatDataFrameAnalyticsRequest(Id id): base(r => r.Optional("id", id))
{
}

// values part of the url path
[IgnoreDataMember]
Id ICatDataFrameAnalyticsRequest.Id => Self.RouteValues.Get<Id>("id");
// Request parameters
///<summary>Whether to ignore if a wildcard expression matches no configs. (This includes `_all` string or when no configs have been specified)</summary>
public bool? AllowNoMatch
{
get => Q<bool? >("allow_no_match");
set => Q("allow_no_match", value);
}

///<summary>The unit in which to display byte values</summary>
public Bytes? Bytes
{
get => Q<Bytes? >("bytes");
set => Q("bytes", value);
}

///<summary>a short version of the Accept header, e.g. json, yaml</summary>
public string Format
{
get => Q<string>("format");
set
{
Q("format", value);
SetAcceptHeader(value);
}
}

///<summary>Comma-separated list of column names to display</summary>
public string[] Headers
{
get => Q<string[]>("h");
set => Q("h", value);
}

///<summary>Return help information</summary>
public bool? Help
{
get => Q<bool? >("help");
set => Q("help", value);
}

///<summary>Comma-separated list of column names or column aliases to sort by</summary>
public string[] SortByColumns
{
get => Q<string[]>("s");
set => Q("s", value);
}

///<summary>Verbose mode. Display column headers</summary>
public bool? Verbose
{
get => Q<bool? >("v");
set => Q("v", value);
}
}

[InterfaceDataContract]
public partial interface ICatDatafeedsRequest : IRequest<CatDatafeedsRequestParameters>
{
Expand Down
2 changes: 1 addition & 1 deletion src/Nest/_Generated/ApiUrlsLookup.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ internal static class ApiUrlsLookups
internal static ApiUrls CatHelp = new ApiUrls(new[]{"_cat"});
internal static ApiUrls CatIndices = new ApiUrls(new[]{"_cat/indices", "_cat/indices/{index}"});
internal static ApiUrls CatMaster = new ApiUrls(new[]{"_cat/master"});
internal static ApiUrls CatMlDataFrameAnalytics = new ApiUrls(new[]{"_cat/ml/data_frame/analytics", "_cat/ml/data_frame/analytics/{id}"});
internal static ApiUrls CatDataFrameAnalytics = new ApiUrls(new[]{"_cat/ml/data_frame/analytics", "_cat/ml/data_frame/analytics/{id}"});
internal static ApiUrls CatDatafeeds = new ApiUrls(new[]{"_cat/ml/datafeeds", "_cat/ml/datafeeds/{datafeed_id}"});
internal static ApiUrls CatJobs = new ApiUrls(new[]{"_cat/ml/anomaly_detectors", "_cat/ml/anomaly_detectors/{job_id}"});
internal static ApiUrls CatTrainedModels = new ApiUrls(new[]{"_cat/ml/trained_models", "_cat/ml/trained_models/{model_id}"});
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Elastic.Xunit.XunitPlumbing;
using Elasticsearch.Net;
using Nest;
using Tests.Core.Extensions;
using Tests.Framework.EndpointTests.TestState;
using Tests.XPack.MachineLearning;

namespace Tests.Cat.CatDataFrameAnalytics
{
[SkipVersion("<7.7.0", "Introduced in 7.7.0")]
public class CatDataFrameAnalyticsApiTests
: MachineLearningIntegrationTestBase<CatResponse<CatDataFrameAnalyticsRecord>, ICatDataFrameAnalyticsRequest, CatDataFrameAnalyticsDescriptor,
CatDataFrameAnalyticsRequest>
{
public CatDataFrameAnalyticsApiTests(MachineLearningCluster cluster, EndpointUsage usage) : base(cluster, usage) { }

protected override bool ExpectIsValid => true;
protected override int ExpectStatusCode => 200;
protected override HttpMethod HttpMethod => HttpMethod.GET;
protected override string UrlPath => "/_cat/ml/data_frame/analytics";

protected override LazyResponses ClientUsage() => Calls(
(client, f) => client.Cat.DataFrameAnalytics(),
(client, f) => client.Cat.DataFrameAnalyticsAsync(),
(client, r) => client.Cat.DataFrameAnalytics(r),
(client, r) => client.Cat.DataFrameAnalyticsAsync(r)
);

protected override void ExpectResponse(CatResponse<CatDataFrameAnalyticsRecord> response) => response.ShouldBeValid();
}
}
Loading

0 comments on commit 25fc219

Please sign in to comment.