Skip to content

Add SLM Start/Stop/Status APIs #4245

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 8 commits into from
Dec 13, 2019
Merged
Show file tree
Hide file tree
Changes from 5 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
3 changes: 2 additions & 1 deletion src/CodeGeneration/ApiGenerator/Domain/Code/CsharpNames.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ string Replace(string original, string ns, string find, string replace)
{ "Indices", (find: "Index", replace: "") },
{ "CrossClusterReplication", (find: "Ccr", replace: "") },
{ "IndexLifecycleManagement", (find: "Ilm", replace: "") },
{ "SnapshotLifecycleManagement", (find: "Slm", replace: "") },
};
foreach (var (ns, (find, replace)) in namespaceRenames)
MethodName = Replace(MethodName, ns, find, replace);
Expand Down Expand Up @@ -88,10 +89,10 @@ private static string CreateCSharpNamespace(string endpointNamespace)
// https://github.com/elastic/elasticsearch/issues/41845
case "ssl": return "Security";
case "ilm": return "IndexLifecycleManagement";
case "slm": return "SnapshotLifecycleManagement";
case "ccr": return "CrossClusterReplication";
case "ml": return "MachineLearning";
case "xpack": return "XPack";
case "slm": return "SnapshotLifecycleManagement";
default: return endpointNamespace.ToPascalCase();
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"slm.get_status":{
"documentation":{
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html"
},
"stability":"stable",
"url":{
"paths":[
{
"path":"/_slm/status",
"methods":[
"GET"
]
}
]
},
"params":{}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"slm.start":{
"documentation":{
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html"
},
"stability":"stable",
"url":{
"paths":[
{
"path":"/_slm/start",
"methods":[
"POST"
]
}
]
},
"params":{}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"slm.stop":{
"documentation":{
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html"
},
"stability":"stable",
"url":{
"paths":[
{
"path":"/_slm/stop",
"methods":[
"POST"
]
}
]
},
"params":{}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,27 @@ public class GetSnapshotLifecycleRequestParameters : RequestParameters<GetSnapsh
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
}

///<summary>Request options for GetStatus <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</para></summary>
public class GetSlmStatusRequestParameters : RequestParameters<GetSlmStatusRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
}

///<summary>Request options for PutSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html</para></summary>
public class PutSnapshotLifecycleRequestParameters : RequestParameters<PutSnapshotLifecycleRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
}

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

///<summary>Request options for Stop <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</para></summary>
public class StopSlmRequestParameters : RequestParameters<StopSlmRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,15 @@ public TResponse GetSnapshotLifecycle<TResponse>(GetSnapshotLifecycleRequestPara
[MapsApi("slm.get_lifecycle", "")]
public Task<TResponse> GetSnapshotLifecycleAsync<TResponse>(GetSnapshotLifecycleRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(GET, "_slm/policy", ctx, null, RequestParams(requestParameters));
///<summary>GET on /_slm/status <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public TResponse GetStatus<TResponse>(GetSlmStatusRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(GET, "_slm/status", null, RequestParams(requestParameters));
///<summary>GET on /_slm/status <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
[MapsApi("slm.get_status", "")]
public Task<TResponse> GetStatusAsync<TResponse>(GetSlmStatusRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(GET, "_slm/status", ctx, null, RequestParams(requestParameters));
///<summary>PUT on /_slm/policy/{policy_id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html</para></summary>
///<param name = "policyId">The id of the snapshot lifecycle policy</param>
///<param name = "body">The snapshot lifecycle policy definition to register</param>
Expand All @@ -98,5 +107,23 @@ public TResponse PutSnapshotLifecycle<TResponse>(string policyId, PostData body,
[MapsApi("slm.put_lifecycle", "policy_id, body")]
public Task<TResponse> PutSnapshotLifecycleAsync<TResponse>(string policyId, PostData body, PutSnapshotLifecycleRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(PUT, Url($"_slm/policy/{policyId:policyId}"), ctx, body, RequestParams(requestParameters));
///<summary>POST on /_slm/start <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public TResponse Start<TResponse>(StartSlmRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(POST, "_slm/start", null, RequestParams(requestParameters));
///<summary>POST on /_slm/start <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
[MapsApi("slm.start", "")]
public Task<TResponse> StartAsync<TResponse>(StartSlmRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(POST, "_slm/start", ctx, null, RequestParams(requestParameters));
///<summary>POST on /_slm/stop <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public TResponse Stop<TResponse>(StopSlmRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(POST, "_slm/stop", null, RequestParams(requestParameters));
///<summary>POST on /_slm/stop <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</para></summary>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
[MapsApi("slm.stop", "")]
public Task<TResponse> StopAsync<TResponse>(StopSlmRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(POST, "_slm/stop", ctx, null, RequestParams(requestParameters));
}
}
24 changes: 24 additions & 0 deletions src/Nest/Descriptors.SnapshotLifecycleManagement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,14 @@ public GetSnapshotLifecycleDescriptor(): base()
// Request parameters
}

///<summary>Descriptor for GetStatus <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</para></summary>
public partial class GetSlmStatusDescriptor : RequestDescriptorBase<GetSlmStatusDescriptor, GetSlmStatusRequestParameters, IGetSlmStatusRequest>, IGetSlmStatusRequest
{
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementGetStatus;
// values part of the url path
// Request parameters
}

///<summary>Descriptor for PutSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html</para></summary>
public partial class PutSnapshotLifecycleDescriptor : RequestDescriptorBase<PutSnapshotLifecycleDescriptor, PutSnapshotLifecycleRequestParameters, IPutSnapshotLifecycleRequest>, IPutSnapshotLifecycleRequest
{
Expand All @@ -114,4 +122,20 @@ protected PutSnapshotLifecycleDescriptor(): base()
Id IPutSnapshotLifecycleRequest.PolicyId => Self.RouteValues.Get<Id>("policy_id");
// Request parameters
}

///<summary>Descriptor for Start <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</para></summary>
public partial class StartSlmDescriptor : RequestDescriptorBase<StartSlmDescriptor, StartSlmRequestParameters, IStartSlmRequest>, IStartSlmRequest
{
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementStart;
// values part of the url path
// Request parameters
}

///<summary>Descriptor for Stop <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</para></summary>
public partial class StopSlmDescriptor : RequestDescriptorBase<StopSlmDescriptor, StopSlmRequestParameters, IStopSlmRequest>, IStopSlmRequest
{
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementStop;
// values part of the url path
// Request parameters
}
}
72 changes: 72 additions & 0 deletions src/Nest/ElasticClient.SnapshotLifecycleManagement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,30 @@ internal SnapshotLifecycleManagementNamespace(ElasticClient client): base(client
/// </summary>
public Task<GetSnapshotLifecycleResponse> GetSnapshotLifecycleAsync(IGetSnapshotLifecycleRequest request, CancellationToken ct = default) => DoRequestAsync<IGetSnapshotLifecycleRequest, GetSnapshotLifecycleResponse>(request, request.RequestParameters, ct);
/// <summary>
/// <c>GET</c> request to the <c>slm.get_status</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</a>
/// </summary>
public GetSlmStatusResponse GetStatus(Func<GetSlmStatusDescriptor, IGetSlmStatusRequest> selector = null) => GetStatus(selector.InvokeOrDefault(new GetSlmStatusDescriptor()));
/// <summary>
/// <c>GET</c> request to the <c>slm.get_status</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</a>
/// </summary>
public Task<GetSlmStatusResponse> GetStatusAsync(Func<GetSlmStatusDescriptor, IGetSlmStatusRequest> selector = null, CancellationToken ct = default) => GetStatusAsync(selector.InvokeOrDefault(new GetSlmStatusDescriptor()), ct);
/// <summary>
/// <c>GET</c> request to the <c>slm.get_status</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</a>
/// </summary>
public GetSlmStatusResponse GetStatus(IGetSlmStatusRequest request) => DoRequest<IGetSlmStatusRequest, GetSlmStatusResponse>(request, request.RequestParameters);
/// <summary>
/// <c>GET</c> request to the <c>slm.get_status</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</a>
/// </summary>
public Task<GetSlmStatusResponse> GetStatusAsync(IGetSlmStatusRequest request, CancellationToken ct = default) => DoRequestAsync<IGetSlmStatusRequest, GetSlmStatusResponse>(request, request.RequestParameters, ct);
/// <summary>
/// <c>PUT</c> request to the <c>slm.put_lifecycle</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html</a>
Expand All @@ -132,5 +156,53 @@ internal SnapshotLifecycleManagementNamespace(ElasticClient client): base(client
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html</a>
/// </summary>
public Task<PutSnapshotLifecycleResponse> PutSnapshotLifecycleAsync(IPutSnapshotLifecycleRequest request, CancellationToken ct = default) => DoRequestAsync<IPutSnapshotLifecycleRequest, PutSnapshotLifecycleResponse>(request, request.RequestParameters, ct);
/// <summary>
/// <c>POST</c> request to the <c>slm.start</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</a>
/// </summary>
public StartSlmResponse Start(Func<StartSlmDescriptor, IStartSlmRequest> selector = null) => Start(selector.InvokeOrDefault(new StartSlmDescriptor()));
/// <summary>
/// <c>POST</c> request to the <c>slm.start</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</a>
/// </summary>
public Task<StartSlmResponse> StartAsync(Func<StartSlmDescriptor, IStartSlmRequest> selector = null, CancellationToken ct = default) => StartAsync(selector.InvokeOrDefault(new StartSlmDescriptor()), ct);
/// <summary>
/// <c>POST</c> request to the <c>slm.start</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</a>
/// </summary>
public StartSlmResponse Start(IStartSlmRequest request) => DoRequest<IStartSlmRequest, StartSlmResponse>(request, request.RequestParameters);
/// <summary>
/// <c>POST</c> request to the <c>slm.start</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</a>
/// </summary>
public Task<StartSlmResponse> StartAsync(IStartSlmRequest request, CancellationToken ct = default) => DoRequestAsync<IStartSlmRequest, StartSlmResponse>(request, request.RequestParameters, ct);
/// <summary>
/// <c>POST</c> request to the <c>slm.stop</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</a>
/// </summary>
public StopSlmResponse Stop(Func<StopSlmDescriptor, IStopSlmRequest> selector = null) => Stop(selector.InvokeOrDefault(new StopSlmDescriptor()));
/// <summary>
/// <c>POST</c> request to the <c>slm.stop</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</a>
/// </summary>
public Task<StopSlmResponse> StopAsync(Func<StopSlmDescriptor, IStopSlmRequest> selector = null, CancellationToken ct = default) => StopAsync(selector.InvokeOrDefault(new StopSlmDescriptor()), ct);
/// <summary>
/// <c>POST</c> request to the <c>slm.stop</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</a>
/// </summary>
public StopSlmResponse Stop(IStopSlmRequest request) => DoRequest<IStopSlmRequest, StopSlmResponse>(request, request.RequestParameters);
/// <summary>
/// <c>POST</c> request to the <c>slm.stop</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</a>
/// </summary>
public Task<StopSlmResponse> StopAsync(IStopSlmRequest request, CancellationToken ct = default) => DoRequestAsync<IStopSlmRequest, StopSlmResponse>(request, request.RequestParameters, ct);
}
}
42 changes: 42 additions & 0 deletions src/Nest/Requests.SnapshotLifecycleManagement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,20 @@ public GetSnapshotLifecycleRequest(): base()
// Request parameters
}

[InterfaceDataContract]
public partial interface IGetSlmStatusRequest : IRequest<GetSlmStatusRequestParameters>
{
}

///<summary>Request for GetStatus <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</para></summary>
public partial class GetSlmStatusRequest : PlainRequestBase<GetSlmStatusRequestParameters>, IGetSlmStatusRequest
{
protected IGetSlmStatusRequest Self => this;
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementGetStatus;
// values part of the url path
// Request parameters
}

[InterfaceDataContract]
public partial interface IPutSnapshotLifecycleRequest : IRequest<PutSnapshotLifecycleRequestParameters>
{
Expand Down Expand Up @@ -161,4 +175,32 @@ protected PutSnapshotLifecycleRequest(): base()
Id IPutSnapshotLifecycleRequest.PolicyId => Self.RouteValues.Get<Id>("policy_id");
// Request parameters
}

[InterfaceDataContract]
public partial interface IStartSlmRequest : IRequest<StartSlmRequestParameters>
{
}

///<summary>Request for Start <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</para></summary>
public partial class StartSlmRequest : PlainRequestBase<StartSlmRequestParameters>, IStartSlmRequest
{
protected IStartSlmRequest Self => this;
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementStart;
// values part of the url path
// Request parameters
}

[InterfaceDataContract]
public partial interface IStopSlmRequest : IRequest<StopSlmRequestParameters>
{
}

///<summary>Request for Stop <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</para></summary>
public partial class StopSlmRequest : PlainRequestBase<StopSlmRequestParameters>, IStopSlmRequest
{
protected IStopSlmRequest Self => this;
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementStop;
// values part of the url path
// Request parameters
}
}
9 changes: 9 additions & 0 deletions src/Nest/XPack/Slm/GetStatus/GetSlmStatusRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Nest
{
[MapsApi("slm.get_status")]
public partial interface IGetSlmStatusRequest { }

public partial class GetSlmStatusRequest { }

public partial class GetSlmStatusDescriptor { }
}
10 changes: 10 additions & 0 deletions src/Nest/XPack/Slm/GetStatus/GetSlmStatusResponse.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using System.Runtime.Serialization;

namespace Nest
{
public class GetSlmStatusResponse : ResponseBase
{
[DataMember(Name = "operation_mode")]
public LifecycleOperationMode OperationMode { get; internal set; }
}
}
Loading