Skip to content

Commit 334dd4e

Browse files
committed
Implement SLM Execute Retention API #4258
1 parent fae4565 commit 334dd4e

File tree

10 files changed

+98
-1
lines changed

10 files changed

+98
-1
lines changed

src/CodeGeneration/ApiGenerator/Configuration/CodeConfiguration.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ public static class CodeConfiguration
6262
"enrich.get_policy.json",
6363
"enrich.put_policy.json",
6464
"enrich.stats.json",
65-
"slm.execute_retention.json",
6665
"transform.delete_transform.json",
6766
"transform.get_transform.json",
6867
"transform.get_transform_stats.json",

src/Elasticsearch.Net/Api/RequestParameters/RequestParameters.SnapshotLifecycleManagement.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ public class ExecuteSnapshotLifecycleRequestParameters : RequestParameters<Execu
3838
public override bool SupportsBody => false;
3939
}
4040

41+
///<summary>Request options for ExecuteRetention <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</para></summary>
42+
public class ExecuteRetentionRequestParameters : RequestParameters<ExecuteRetentionRequestParameters>
43+
{
44+
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
45+
public override bool SupportsBody => false;
46+
}
47+
4148
///<summary>Request options for GetSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get.html</para></summary>
4249
public class GetSnapshotLifecycleRequestParameters : RequestParameters<GetSnapshotLifecycleRequestParameters>
4350
{
@@ -56,6 +63,7 @@ public class GetSnapshotLifecycleStatsRequestParameters : RequestParameters<GetS
5663
public class GetSnapshotLifecycleManagementStatusRequestParameters : RequestParameters<GetSnapshotLifecycleManagementStatusRequestParameters>
5764
{
5865
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
66+
public override bool SupportsBody => false;
5967
}
6068

6169
///<summary>Request options for PutSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html</para></summary>
@@ -69,11 +77,13 @@ public class PutSnapshotLifecycleRequestParameters : RequestParameters<PutSnapsh
6977
public class StartSnapshotLifecycleManagementRequestParameters : RequestParameters<StartSnapshotLifecycleManagementRequestParameters>
7078
{
7179
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
80+
public override bool SupportsBody => false;
7281
}
7382

7483
///<summary>Request options for Stop <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</para></summary>
7584
public class StopSnapshotLifecycleManagementRequestParameters : RequestParameters<StopSnapshotLifecycleManagementRequestParameters>
7685
{
7786
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
87+
public override bool SupportsBody => false;
7888
}
7989
}

src/Elasticsearch.Net/ElasticLowLevelClient.SnapshotLifecycleManagement.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ public TResponse ExecuteSnapshotLifecycle<TResponse>(string policyId, ExecuteSna
6565
[MapsApi("slm.execute_lifecycle", "policy_id")]
6666
public Task<TResponse> ExecuteSnapshotLifecycleAsync<TResponse>(string policyId, ExecuteSnapshotLifecycleRequestParameters requestParameters = null, CancellationToken ctx = default)
6767
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(POST, Url($"_slm/policy/{policyId:policyId}/_execute"), ctx, null, RequestParams(requestParameters));
68+
///<summary>POST on /_slm/_execute_retention <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</para></summary>
69+
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
70+
public TResponse ExecuteRetention<TResponse>(ExecuteRetentionRequestParameters requestParameters = null)
71+
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(POST, "_slm/_execute_retention", null, RequestParams(requestParameters));
72+
///<summary>POST on /_slm/_execute_retention <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</para></summary>
73+
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
74+
[MapsApi("slm.execute_retention", "")]
75+
public Task<TResponse> ExecuteRetentionAsync<TResponse>(ExecuteRetentionRequestParameters requestParameters = null, CancellationToken ctx = default)
76+
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(POST, "_slm/_execute_retention", ctx, null, RequestParams(requestParameters));
6877
///<summary>GET on /_slm/policy/{policy_id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get.html</para></summary>
6978
///<param name = "policyId">Comma-separated list of snapshot lifecycle policies to retrieve</param>
7079
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>

src/Nest/Descriptors.SnapshotLifecycleManagement.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@ protected ExecuteSnapshotLifecycleDescriptor(): base()
7272
// Request parameters
7373
}
7474

75+
///<summary>Descriptor for ExecuteRetention <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</para></summary>
76+
public partial class ExecuteRetentionDescriptor : RequestDescriptorBase<ExecuteRetentionDescriptor, ExecuteRetentionRequestParameters, IExecuteRetentionRequest>, IExecuteRetentionRequest
77+
{
78+
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementExecuteRetention;
79+
// values part of the url path
80+
// Request parameters
81+
}
82+
7583
///<summary>Descriptor for GetSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get.html</para></summary>
7684
public partial class GetSnapshotLifecycleDescriptor : RequestDescriptorBase<GetSnapshotLifecycleDescriptor, GetSnapshotLifecycleRequestParameters, IGetSnapshotLifecycleRequest>, IGetSnapshotLifecycleRequest
7785
{

src/Nest/ElasticClient.SnapshotLifecycleManagement.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,30 @@ internal SnapshotLifecycleManagementNamespace(ElasticClient client): base(client
8585
/// </summary>
8686
public Task<ExecuteSnapshotLifecycleResponse> ExecuteSnapshotLifecycleAsync(IExecuteSnapshotLifecycleRequest request, CancellationToken ct = default) => DoRequestAsync<IExecuteSnapshotLifecycleRequest, ExecuteSnapshotLifecycleResponse>(request, request.RequestParameters, ct);
8787
/// <summary>
88+
/// <c>POST</c> request to the <c>slm.execute_retention</c> API, read more about this API online:
89+
/// <para></para>
90+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</a>
91+
/// </summary>
92+
public ExecuteRetentionResponse ExecuteRetention(Func<ExecuteRetentionDescriptor, IExecuteRetentionRequest> selector = null) => ExecuteRetention(selector.InvokeOrDefault(new ExecuteRetentionDescriptor()));
93+
/// <summary>
94+
/// <c>POST</c> request to the <c>slm.execute_retention</c> API, read more about this API online:
95+
/// <para></para>
96+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</a>
97+
/// </summary>
98+
public Task<ExecuteRetentionResponse> ExecuteRetentionAsync(Func<ExecuteRetentionDescriptor, IExecuteRetentionRequest> selector = null, CancellationToken ct = default) => ExecuteRetentionAsync(selector.InvokeOrDefault(new ExecuteRetentionDescriptor()), ct);
99+
/// <summary>
100+
/// <c>POST</c> request to the <c>slm.execute_retention</c> API, read more about this API online:
101+
/// <para></para>
102+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</a>
103+
/// </summary>
104+
public ExecuteRetentionResponse ExecuteRetention(IExecuteRetentionRequest request) => DoRequest<IExecuteRetentionRequest, ExecuteRetentionResponse>(request, request.RequestParameters);
105+
/// <summary>
106+
/// <c>POST</c> request to the <c>slm.execute_retention</c> API, read more about this API online:
107+
/// <para></para>
108+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</a>
109+
/// </summary>
110+
public Task<ExecuteRetentionResponse> ExecuteRetentionAsync(IExecuteRetentionRequest request, CancellationToken ct = default) => DoRequestAsync<IExecuteRetentionRequest, ExecuteRetentionResponse>(request, request.RequestParameters, ct);
111+
/// <summary>
88112
/// <c>GET</c> request to the <c>slm.get_lifecycle</c> API, read more about this API online:
89113
/// <para></para>
90114
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get.html</a>

src/Nest/Requests.SnapshotLifecycleManagement.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,20 @@ protected ExecuteSnapshotLifecycleRequest(): base()
9797
// Request parameters
9898
}
9999

100+
[InterfaceDataContract]
101+
public partial interface IExecuteRetentionRequest : IRequest<ExecuteRetentionRequestParameters>
102+
{
103+
}
104+
105+
///<summary>Request for ExecuteRetention <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</para></summary>
106+
public partial class ExecuteRetentionRequest : PlainRequestBase<ExecuteRetentionRequestParameters>, IExecuteRetentionRequest
107+
{
108+
protected IExecuteRetentionRequest Self => this;
109+
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementExecuteRetention;
110+
// values part of the url path
111+
// Request parameters
112+
}
113+
100114
[InterfaceDataContract]
101115
public partial interface IGetSnapshotLifecycleRequest : IRequest<GetSnapshotLifecycleRequestParameters>
102116
{
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Nest
2+
{
3+
[MapsApi("slm.execute_retention")]
4+
public partial interface IExecuteRetentionRequest { }
5+
6+
public partial class ExecuteRetentionRequest { }
7+
8+
public partial class ExecuteRetentionDescriptor { }
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 ExecuteRetentionResponse : AcknowledgedResponseBase { }
4+
}

src/Nest/_Generated/ApiUrlsLookup.generated.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ internal static class ApiUrlsLookups
234234
internal static ApiUrls SecurityPutUser = new ApiUrls(new[]{"_security/user/{username}"});
235235
internal static ApiUrls SnapshotLifecycleManagementDeleteSnapshotLifecycle = new ApiUrls(new[]{"_slm/policy/{policy_id}"});
236236
internal static ApiUrls SnapshotLifecycleManagementExecuteSnapshotLifecycle = new ApiUrls(new[]{"_slm/policy/{policy_id}/_execute"});
237+
internal static ApiUrls SnapshotLifecycleManagementExecuteRetention = new ApiUrls(new[]{"_slm/_execute_retention"});
237238
internal static ApiUrls SnapshotLifecycleManagementGetSnapshotLifecycle = new ApiUrls(new[]{"_slm/policy/{policy_id}", "_slm/policy"});
238239
internal static ApiUrls SnapshotLifecycleManagementGetSnapshotLifecycleStats = new ApiUrls(new[]{"_slm/stats"});
239240
internal static ApiUrls SnapshotLifecycleManagementGetStatus = new ApiUrls(new[]{"_slm/status"});

src/Tests/Tests/XPack/Slm/SlmApiTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class SlmApiTests : CoordinatedIntegrationTestBase<XPackCluster>
1717
private const string CreateRepositoryStep = nameof(CreateRepositoryStep);
1818
private const string DeleteSnapshotLifecycleStep = nameof(DeleteSnapshotLifecycleStep);
1919
private const string ExecuteSnapshotLifecycleStep = nameof(ExecuteSnapshotLifecycleStep);
20+
private const string ExecuteRetentionLifecycleStep = nameof(ExecuteRetentionLifecycleStep);
2021
private const string GetAllSnapshotLifecycleStep = nameof(GetAllSnapshotLifecycleStep);
2122
private const string GetSnapshotLifecycleStep = nameof(GetSnapshotLifecycleStep);
2223
private const string GetMissingSnapshotLifecycleStep = nameof(GetMissingSnapshotLifecycleStep);
@@ -140,6 +141,18 @@ public SlmApiTests(XPackCluster cluster, EndpointUsage usage) : base(new Coordin
140141
(v, c, r) => c.SnapshotLifecycleManagement.ExecuteSnapshotLifecycleAsync(r)
141142
)
142143
},
144+
{
145+
ExecuteRetentionLifecycleStep, u =>
146+
u.Calls<ExecuteRetentionDescriptor, ExecuteRetentionRequest, IExecuteRetentionRequest,
147+
ExecuteRetentionResponse>(
148+
v => new ExecuteRetentionRequest(),
149+
(v, d) => d,
150+
(v, c, f) => c.SnapshotLifecycleManagement.ExecuteRetention(f),
151+
(v, c, f) => c.SnapshotLifecycleManagement.ExecuteRetentionAsync(f),
152+
(v, c, r) => c.SnapshotLifecycleManagement.ExecuteRetention(r),
153+
(v, c, r) => c.SnapshotLifecycleManagement.ExecuteRetentionAsync(r)
154+
)
155+
},
143156
{
144157
GetSnapshotLifecycleAfterExecuteStep, u =>
145158
u.Calls<GetSnapshotLifecycleDescriptor, GetSnapshotLifecycleRequest, IGetSnapshotLifecycleRequest, GetSnapshotLifecycleResponse>(
@@ -256,6 +269,12 @@ [I] public async Task ExecuteSnapshotLifecycleResponse() => await Assert<Execute
256269
r.SnapshotName.Should().NotBeNull();
257270
});
258271

272+
[I] public async Task ExecuteRetentionSnapshotLifecycleResponse() => await Assert<ExecuteRetentionResponse>(ExecuteRetentionLifecycleStep,
273+
(v, r) =>
274+
{
275+
r.IsValid.Should().BeTrue();
276+
});
277+
259278
[I] public async Task GetSnapshotLifeCycleAfterExecuteResponse() => await Assert<GetSnapshotLifecycleResponse>(GetSnapshotLifecycleAfterExecuteStep, (v, r) =>
260279
{
261280
r.IsValid.Should().BeTrue();

0 commit comments

Comments
 (0)