Skip to content

Commit 99a87a4

Browse files
Implement ml.set_upgrade_mode (#4535) (#4604)
Implement ml.set_upgrade_mode Co-authored-by: Stuart Cam <stuart.cam@elastic.co>
1 parent 1fdec23 commit 99a87a4

File tree

8 files changed

+132
-1
lines changed

8 files changed

+132
-1
lines changed

src/ApiGenerator/Configuration/CodeConfiguration.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public static class CodeConfiguration
6666
"cluster.delete_component_template.json",
6767
"cluster.get_component_template.json",
6868
"cluster.put_component_template.json",
69-
"ml.set_upgrade_mode.json",
7069
"security.get_builtin_privileges.json",
7170
"transform.delete_transform.json",
7271
"transform.get_transform.json",

src/Nest/Descriptors.MachineLearning.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,18 @@ protected RevertModelSnapshotDescriptor(): base()
864864
// Request parameters
865865
}
866866

867+
///<summary>Descriptor for SetUpgradeMode <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html</para></summary>
868+
public partial class SetUpgradeModeDescriptor : RequestDescriptorBase<SetUpgradeModeDescriptor, SetUpgradeModeRequestParameters, ISetUpgradeModeRequest>, ISetUpgradeModeRequest
869+
{
870+
internal override ApiUrls ApiUrls => ApiUrlsLookups.MachineLearningSetUpgradeMode;
871+
// values part of the url path
872+
// Request parameters
873+
///<summary>Whether to enable upgrade_mode ML setting or not. Defaults to false.</summary>
874+
public SetUpgradeModeDescriptor Enabled(bool? enabled = true) => Qs("enabled", enabled);
875+
///<summary>Controls the time to wait before action times out. Defaults to 30 seconds</summary>
876+
public SetUpgradeModeDescriptor Timeout(Time timeout) => Qs("timeout", timeout);
877+
}
878+
867879
///<summary>Descriptor for StartDatafeed <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-start-datafeed.html</para></summary>
868880
public partial class StartDatafeedDescriptor : RequestDescriptorBase<StartDatafeedDescriptor, StartDatafeedRequestParameters, IStartDatafeedRequest>, IStartDatafeedRequest
869881
{

src/Nest/ElasticClient.MachineLearning.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -935,6 +935,30 @@ public Task<PutJobResponse> PutJobAsync<TDocument>(Id jobId, Func<PutJobDescript
935935
/// </summary>
936936
public Task<RevertModelSnapshotResponse> RevertModelSnapshotAsync(IRevertModelSnapshotRequest request, CancellationToken ct = default) => DoRequestAsync<IRevertModelSnapshotRequest, RevertModelSnapshotResponse>(request, request.RequestParameters, ct);
937937
/// <summary>
938+
/// <c>POST</c> request to the <c>ml.set_upgrade_mode</c> API, read more about this API online:
939+
/// <para></para>
940+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html</a>
941+
/// </summary>
942+
public SetUpgradeModeResponse SetUpgradeMode(Func<SetUpgradeModeDescriptor, ISetUpgradeModeRequest> selector = null) => SetUpgradeMode(selector.InvokeOrDefault(new SetUpgradeModeDescriptor()));
943+
/// <summary>
944+
/// <c>POST</c> request to the <c>ml.set_upgrade_mode</c> API, read more about this API online:
945+
/// <para></para>
946+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html</a>
947+
/// </summary>
948+
public Task<SetUpgradeModeResponse> SetUpgradeModeAsync(Func<SetUpgradeModeDescriptor, ISetUpgradeModeRequest> selector = null, CancellationToken ct = default) => SetUpgradeModeAsync(selector.InvokeOrDefault(new SetUpgradeModeDescriptor()), ct);
949+
/// <summary>
950+
/// <c>POST</c> request to the <c>ml.set_upgrade_mode</c> API, read more about this API online:
951+
/// <para></para>
952+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html</a>
953+
/// </summary>
954+
public SetUpgradeModeResponse SetUpgradeMode(ISetUpgradeModeRequest request) => DoRequest<ISetUpgradeModeRequest, SetUpgradeModeResponse>(request, request.RequestParameters);
955+
/// <summary>
956+
/// <c>POST</c> request to the <c>ml.set_upgrade_mode</c> API, read more about this API online:
957+
/// <para></para>
958+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html</a>
959+
/// </summary>
960+
public Task<SetUpgradeModeResponse> SetUpgradeModeAsync(ISetUpgradeModeRequest request, CancellationToken ct = default) => DoRequestAsync<ISetUpgradeModeRequest, SetUpgradeModeResponse>(request, request.RequestParameters, ct);
961+
/// <summary>
938962
/// <c>POST</c> request to the <c>ml.start_datafeed</c> API, read more about this API online:
939963
/// <para></para>
940964
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-start-datafeed.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-start-datafeed.html</a>

src/Nest/Requests.MachineLearning.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1443,6 +1443,33 @@ protected RevertModelSnapshotRequest(): base()
14431443
// Request parameters
14441444
}
14451445

1446+
[InterfaceDataContract]
1447+
public partial interface ISetUpgradeModeRequest : IRequest<SetUpgradeModeRequestParameters>
1448+
{
1449+
}
1450+
1451+
///<summary>Request for SetUpgradeMode <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-set-upgrade-mode.html</para></summary>
1452+
public partial class SetUpgradeModeRequest : PlainRequestBase<SetUpgradeModeRequestParameters>, ISetUpgradeModeRequest
1453+
{
1454+
protected ISetUpgradeModeRequest Self => this;
1455+
internal override ApiUrls ApiUrls => ApiUrlsLookups.MachineLearningSetUpgradeMode;
1456+
// values part of the url path
1457+
// Request parameters
1458+
///<summary>Whether to enable upgrade_mode ML setting or not. Defaults to false.</summary>
1459+
public bool? Enabled
1460+
{
1461+
get => Q<bool? >("enabled");
1462+
set => Q("enabled", value);
1463+
}
1464+
1465+
///<summary>Controls the time to wait before action times out. Defaults to 30 seconds</summary>
1466+
public Time Timeout
1467+
{
1468+
get => Q<Time>("timeout");
1469+
set => Q("timeout", value);
1470+
}
1471+
}
1472+
14461473
[InterfaceDataContract]
14471474
public partial interface IStartDatafeedRequest : IRequest<StartDatafeedRequestParameters>
14481475
{
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Nest
2+
{
3+
[MapsApi("ml.set_upgrade_mode.json")]
4+
public partial interface ISetUpgradeModeRequest { }
5+
6+
public partial class SetUpgradeModeRequest { }
7+
8+
public partial class SetUpgradeModeDescriptor { }
9+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
namespace Nest
2+
{
3+
public class SetUpgradeModeResponse : AcknowledgedResponseBase { }
4+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using System;
2+
using Elastic.Xunit.XunitPlumbing;
3+
using Elasticsearch.Net;
4+
using FluentAssertions;
5+
using Nest;
6+
using Tests.Core.Extensions;
7+
using Tests.Framework.EndpointTests.TestState;
8+
9+
namespace Tests.XPack.MachineLearning.SetUpgradeMode
10+
{
11+
[SkipVersion("<7.7.0", "Introduced in 7.7.0")]
12+
public class SetUpgradeModeApiTests : MachineLearningIntegrationTestBase<SetUpgradeModeResponse, ISetUpgradeModeRequest, SetUpgradeModeDescriptor, SetUpgradeModeRequest>
13+
{
14+
public SetUpgradeModeApiTests(MachineLearningCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
15+
16+
protected override bool ExpectIsValid => true;
17+
protected override object ExpectJson => null;
18+
protected override int ExpectStatusCode => 200;
19+
protected override Func<SetUpgradeModeDescriptor, ISetUpgradeModeRequest> Fluent => f => f;
20+
protected override HttpMethod HttpMethod => HttpMethod.POST;
21+
protected override SetUpgradeModeRequest Initializer => new SetUpgradeModeRequest();
22+
protected override string UrlPath => $"/_ml/set_upgrade_mode";
23+
24+
protected override LazyResponses ClientUsage() => Calls(
25+
(client, f) => client.MachineLearning.SetUpgradeMode(f),
26+
(client, f) => client.MachineLearning.SetUpgradeModeAsync(f),
27+
(client, r) => client.MachineLearning.SetUpgradeMode(r),
28+
(client, r) => client.MachineLearning.SetUpgradeModeAsync(r)
29+
);
30+
31+
protected override SetUpgradeModeDescriptor NewDescriptor() => new SetUpgradeModeDescriptor();
32+
33+
protected override void ExpectResponse(SetUpgradeModeResponse response)
34+
{
35+
response.ShouldBeValid();
36+
response.Acknowledged.Should().BeTrue();
37+
}
38+
}
39+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using System.Threading.Tasks;
2+
using Elastic.Xunit.XunitPlumbing;
3+
using Nest;
4+
using Tests.Framework.EndpointTests;
5+
using static Tests.Framework.EndpointTests.UrlTester;
6+
7+
namespace Tests.XPack.MachineLearning.SetUpgradeMode
8+
{
9+
public class SetUpgradeModeUrlTests : UrlTestsBase
10+
{
11+
[U] public override async Task Urls() => await POST("/_ml/set_upgrade_mode")
12+
.Fluent(c => c.MachineLearning.SetUpgradeMode())
13+
.Request(c => c.MachineLearning.SetUpgradeMode(new SetUpgradeModeRequest()))
14+
.FluentAsync(c => c.MachineLearning.SetUpgradeModeAsync())
15+
.RequestAsync(c => c.MachineLearning.SetUpgradeModeAsync(new SetUpgradeModeRequest()));
16+
}
17+
}

0 commit comments

Comments
 (0)