Skip to content

Implement SLM Execute Retention API #4258

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 3 commits into from
Dec 13, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ public static class CodeConfiguration
"enrich.get_policy.json",
"enrich.put_policy.json",
"enrich.stats.json",
"slm.execute_retention.json",
"slm.get_stats.json",
"transform.delete_transform.json",
"transform.get_transform.json",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ public class ExecuteSnapshotLifecycleRequestParameters : RequestParameters<Execu
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
}

///<summary>Request options for ExecuteRetentionSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</para></summary>
public class ExecuteRetentionSnapshotLifecycleRequestParameters : RequestParameters<ExecuteRetentionSnapshotLifecycleRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
}

///<summary>Request options for GetSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get.html</para></summary>
public class GetSnapshotLifecycleRequestParameters : RequestParameters<GetSnapshotLifecycleRequestParameters>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,15 @@ public TResponse ExecuteSnapshotLifecycle<TResponse>(string policyId, ExecuteSna
[MapsApi("slm.execute_lifecycle", "policy_id")]
public Task<TResponse> ExecuteSnapshotLifecycleAsync<TResponse>(string policyId, ExecuteSnapshotLifecycleRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(PUT, Url($"_slm/policy/{policyId:policyId}/_execute"), ctx, null, RequestParams(requestParameters));
///<summary>POST on /_slm/_execute_retention <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public TResponse ExecuteRetentionSnapshotLifecycle<TResponse>(ExecuteRetentionSnapshotLifecycleRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(POST, "_slm/_execute_retention", null, RequestParams(requestParameters));
///<summary>POST on /_slm/_execute_retention <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
[MapsApi("slm.execute_retention", "")]
public Task<TResponse> ExecuteRetentionSnapshotLifecycleAsync<TResponse>(ExecuteRetentionSnapshotLifecycleRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(POST, "_slm/_execute_retention", ctx, null, RequestParams(requestParameters));
///<summary>GET on /_slm/policy/{policy_id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get.html</para></summary>
///<param name = "policyId">Comma-separated list of snapshot lifecycle policies to retrieve</param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
Expand Down
8 changes: 8 additions & 0 deletions src/Nest/Descriptors.SnapshotLifecycleManagement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ protected ExecuteSnapshotLifecycleDescriptor(): base()
// Request parameters
}

///<summary>Descriptor for ExecuteRetentionSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</para></summary>
public partial class ExecuteRetentionSnapshotLifecycleDescriptor : RequestDescriptorBase<ExecuteRetentionSnapshotLifecycleDescriptor, ExecuteRetentionSnapshotLifecycleRequestParameters, IExecuteRetentionSnapshotLifecycleRequest>, IExecuteRetentionSnapshotLifecycleRequest
{
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementExecuteRetentionSnapshotLifecycle;
// values part of the url path
// Request parameters
}

///<summary>Descriptor for GetSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-get.html</para></summary>
public partial class GetSnapshotLifecycleDescriptor : RequestDescriptorBase<GetSnapshotLifecycleDescriptor, GetSnapshotLifecycleRequestParameters, IGetSnapshotLifecycleRequest>, IGetSnapshotLifecycleRequest
{
Expand Down
24 changes: 24 additions & 0 deletions src/Nest/ElasticClient.SnapshotLifecycleManagement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,30 @@ internal SnapshotLifecycleManagementNamespace(ElasticClient client): base(client
/// </summary>
public Task<ExecuteSnapshotLifecycleResponse> ExecuteSnapshotLifecycleAsync(IExecuteSnapshotLifecycleRequest request, CancellationToken ct = default) => DoRequestAsync<IExecuteSnapshotLifecycleRequest, ExecuteSnapshotLifecycleResponse>(request, request.RequestParameters, ct);
/// <summary>
/// <c>POST</c> request to the <c>slm.execute_retention</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public ExecuteRetentionSnapshotLifecycleResponse ExecuteRetentionSnapshotLifecycle(Func<ExecuteRetentionSnapshotLifecycleDescriptor, IExecuteRetentionSnapshotLifecycleRequest> selector = null) => ExecuteRetentionSnapshotLifecycle(selector.InvokeOrDefault(new ExecuteRetentionSnapshotLifecycleDescriptor()));
/// <summary>
/// <c>POST</c> request to the <c>slm.execute_retention</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public Task<ExecuteRetentionSnapshotLifecycleResponse> ExecuteRetentionSnapshotLifecycleAsync(Func<ExecuteRetentionSnapshotLifecycleDescriptor, IExecuteRetentionSnapshotLifecycleRequest> selector = null, CancellationToken ct = default) => ExecuteRetentionSnapshotLifecycleAsync(selector.InvokeOrDefault(new ExecuteRetentionSnapshotLifecycleDescriptor()), ct);
/// <summary>
/// <c>POST</c> request to the <c>slm.execute_retention</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public ExecuteRetentionSnapshotLifecycleResponse ExecuteRetentionSnapshotLifecycle(IExecuteRetentionSnapshotLifecycleRequest request) => DoRequest<IExecuteRetentionSnapshotLifecycleRequest, ExecuteRetentionSnapshotLifecycleResponse>(request, request.RequestParameters);
/// <summary>
/// <c>POST</c> request to the <c>slm.execute_retention</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public Task<ExecuteRetentionSnapshotLifecycleResponse> ExecuteRetentionSnapshotLifecycleAsync(IExecuteRetentionSnapshotLifecycleRequest request, CancellationToken ct = default) => DoRequestAsync<IExecuteRetentionSnapshotLifecycleRequest, ExecuteRetentionSnapshotLifecycleResponse>(request, request.RequestParameters, ct);
/// <summary>
/// <c>GET</c> request to the <c>slm.get_lifecycle</c> API, read more about this API online:
/// <para></para>
/// <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>
Expand Down
14 changes: 14 additions & 0 deletions src/Nest/Requests.SnapshotLifecycleManagement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,20 @@ protected ExecuteSnapshotLifecycleRequest(): base()
// Request parameters
}

[InterfaceDataContract]
public partial interface IExecuteRetentionSnapshotLifecycleRequest : IRequest<ExecuteRetentionSnapshotLifecycleRequestParameters>
{
}

///<summary>Request for ExecuteRetentionSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-execute-retention.html</para></summary>
public partial class ExecuteRetentionSnapshotLifecycleRequest : PlainRequestBase<ExecuteRetentionSnapshotLifecycleRequestParameters>, IExecuteRetentionSnapshotLifecycleRequest
{
protected IExecuteRetentionSnapshotLifecycleRequest Self => this;
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementExecuteRetentionSnapshotLifecycle;
// values part of the url path
// Request parameters
}

[InterfaceDataContract]
public partial interface IGetSnapshotLifecycleRequest : IRequest<GetSnapshotLifecycleRequestParameters>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Nest
{
[MapsApi("slm.execute_retention")]
public partial interface IExecuteRetentionSnapshotLifecycleRequest { }

public partial class ExecuteRetentionSnapshotLifecycleRequest { }

public partial class ExecuteRetentionSnapshotLifecycleDescriptor { }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
namespace Nest
{
public class ExecuteRetentionSnapshotLifecycleResponse : AcknowledgedResponseBase { }
}
1 change: 1 addition & 0 deletions src/Nest/_Generated/ApiUrlsLookup.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ internal static class ApiUrlsLookups
internal static ApiUrls SecurityPutUser = new ApiUrls(new[]{"_security/user/{username}"});
internal static ApiUrls SnapshotLifecycleManagementDeleteSnapshotLifecycle = new ApiUrls(new[]{"_slm/policy/{policy_id}"});
internal static ApiUrls SnapshotLifecycleManagementExecuteSnapshotLifecycle = new ApiUrls(new[]{"_slm/policy/{policy_id}/_execute"});
internal static ApiUrls SnapshotLifecycleManagementExecuteRetentionSnapshotLifecycle = new ApiUrls(new[]{"_slm/_execute_retention"});
internal static ApiUrls SnapshotLifecycleManagementGetSnapshotLifecycle = new ApiUrls(new[]{"_slm/policy/{policy_id}", "_slm/policy"});
internal static ApiUrls SnapshotLifecycleManagementPutSnapshotLifecycle = new ApiUrls(new[]{"_slm/policy/{policy_id}"});
internal static ApiUrls SnapshotCleanupRepository = new ApiUrls(new[]{"_snapshot/{repository}/_cleanup"});
Expand Down
19 changes: 19 additions & 0 deletions src/Tests/Tests/XPack/Slm/SlmApiTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public class SlmApiTests : CoordinatedIntegrationTestBase<XPackCluster>
private const string CreateRepositoryStep = nameof(CreateRepositoryStep);
private const string DeleteSnapshotLifecycleStep = nameof(DeleteSnapshotLifecycleStep);
private const string ExecuteSnapshotLifecycleStep = nameof(ExecuteSnapshotLifecycleStep);
private const string ExecuteRetentionLifecycleStep = nameof(ExecuteRetentionLifecycleStep);
private const string GetAllSnapshotLifecycleStep = nameof(GetAllSnapshotLifecycleStep);
private const string GetSnapshotLifecycleStep = nameof(GetSnapshotLifecycleStep);
private const string GetSnapshotLifecycleAfterExecuteStep = nameof(GetSnapshotLifecycleAfterExecuteStep);
Expand Down Expand Up @@ -102,6 +103,18 @@ public SlmApiTests(XPackCluster cluster, EndpointUsage usage) : base(new Coordin
(v, c, r) => c.SnapshotLifecycleManagement.ExecuteSnapshotLifecycleAsync(r)
)
},
{
ExecuteRetentionLifecycleStep, u =>
u.Calls<ExecuteRetentionSnapshotLifecycleDescriptor, ExecuteRetentionSnapshotLifecycleRequest, IExecuteRetentionSnapshotLifecycleRequest,
ExecuteRetentionSnapshotLifecycleResponse>(
v => new ExecuteRetentionSnapshotLifecycleRequest(),
(v, d) => d,
(v, c, f) => c.SnapshotLifecycleManagement.ExecuteRetentionSnapshotLifecycle(f),
(v, c, f) => c.SnapshotLifecycleManagement.ExecuteRetentionSnapshotLifecycleAsync(f),
(v, c, r) => c.SnapshotLifecycleManagement.ExecuteRetentionSnapshotLifecycle(r),
(v, c, r) => c.SnapshotLifecycleManagement.ExecuteRetentionSnapshotLifecycleAsync(r)
)
},
{
GetSnapshotLifecycleAfterExecuteStep, u =>
u.Calls<GetSnapshotLifecycleDescriptor, GetSnapshotLifecycleRequest, IGetSnapshotLifecycleRequest, GetSnapshotLifecycleResponse>(
Expand Down Expand Up @@ -174,6 +187,12 @@ [I] public async Task ExecuteSnapshotLifecycleResponse() => await Assert<Execute
r.SnapshotName.Should().NotBeNull();
});

[I] public async Task ExecuteRetentionSnapshotLifecycleResponse() => await Assert<ExecuteRetentionSnapshotLifecycleResponse>(ExecuteRetentionLifecycleStep,
(v, r) =>
{
r.IsValid.Should().BeTrue();
});

[I] public async Task GetSnapshotLifeCycleAfterExecuteResponse() => await Assert<GetSnapshotLifecycleResponse>(GetSnapshotLifecycleAfterExecuteStep, (v, r) =>
{
r.IsValid.Should().BeTrue();
Expand Down