Skip to content

Commit d4c6b80

Browse files
authored
Add SLM Start/Stop/Status APIs (#4245)
1 parent c5e867d commit d4c6b80

21 files changed

+400
-2
lines changed

src/CodeGeneration/ApiGenerator/Domain/Code/CsharpNames.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ string Replace(string original, string ns, string find, string replace)
3636
{ "Indices", (find: "Index", replace: "") },
3737
{ "CrossClusterReplication", (find: "Ccr", replace: "") },
3838
{ "IndexLifecycleManagement", (find: "Ilm", replace: "") },
39+
{ "SnapshotLifecycleManagement", (find: "Slm", replace: "") },
3940
};
4041
foreach (var (ns, (find, replace)) in namespaceRenames)
4142
MethodName = Replace(MethodName, ns, find, replace);
@@ -88,10 +89,10 @@ private static string CreateCSharpNamespace(string endpointNamespace)
8889
// https://github.com/elastic/elasticsearch/issues/41845
8990
case "ssl": return "Security";
9091
case "ilm": return "IndexLifecycleManagement";
92+
case "slm": return "SnapshotLifecycleManagement";
9193
case "ccr": return "CrossClusterReplication";
9294
case "ml": return "MachineLearning";
9395
case "xpack": return "XPack";
94-
case "slm": return "SnapshotLifecycleManagement";
9596
default: return endpointNamespace.ToPascalCase();
9697
}
9798
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"slm.get_status":{
3+
"documentation":{
4+
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html"
5+
},
6+
"stability":"stable",
7+
"url":{
8+
"paths":[
9+
{
10+
"path":"/_slm/status",
11+
"methods":[
12+
"GET"
13+
]
14+
}
15+
]
16+
},
17+
"params":{}
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"slm.start":{
3+
"documentation":{
4+
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html"
5+
},
6+
"stability":"stable",
7+
"url":{
8+
"paths":[
9+
{
10+
"path":"/_slm/start",
11+
"methods":[
12+
"POST"
13+
]
14+
}
15+
]
16+
},
17+
"params":{}
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"slm.stop":{
3+
"documentation":{
4+
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html"
5+
},
6+
"stability":"stable",
7+
"url":{
8+
"paths":[
9+
{
10+
"path":"/_slm/stop",
11+
"methods":[
12+
"POST"
13+
]
14+
}
15+
]
16+
},
17+
"params":{}
18+
}
19+
}

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,27 @@ public class GetSnapshotLifecycleStatsRequestParameters : RequestParameters<GetS
4848
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
4949
}
5050

51+
///<summary>Request options for GetStatus <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</para></summary>
52+
public class GetSnapshotLifecycleManagementStatusRequestParameters : RequestParameters<GetSnapshotLifecycleManagementStatusRequestParameters>
53+
{
54+
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
55+
}
56+
5157
///<summary>Request options for PutSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html</para></summary>
5258
public class PutSnapshotLifecycleRequestParameters : RequestParameters<PutSnapshotLifecycleRequestParameters>
5359
{
5460
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
5561
}
62+
63+
///<summary>Request options for Start <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</para></summary>
64+
public class StartSnapshotLifecycleManagementRequestParameters : RequestParameters<StartSnapshotLifecycleManagementRequestParameters>
65+
{
66+
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
67+
}
68+
69+
///<summary>Request options for Stop <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</para></summary>
70+
public class StopSnapshotLifecycleManagementRequestParameters : RequestParameters<StopSnapshotLifecycleManagementRequestParameters>
71+
{
72+
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
73+
}
5674
}

src/Elasticsearch.Net/ElasticLowLevelClient.SnapshotLifecycleManagement.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,15 @@ public TResponse GetSnapshotLifecycleStats<TResponse>(GetSnapshotLifecycleStatsR
9494
[MapsApi("slm.get_stats", "")]
9595
public Task<TResponse> GetSnapshotLifecycleStatsAsync<TResponse>(GetSnapshotLifecycleStatsRequestParameters requestParameters = null, CancellationToken ctx = default)
9696
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(GET, "_slm/stats", ctx, null, RequestParams(requestParameters));
97+
///<summary>GET on /_slm/status <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</para></summary>
98+
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
99+
public TResponse GetStatus<TResponse>(GetSnapshotLifecycleManagementStatusRequestParameters requestParameters = null)
100+
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(GET, "_slm/status", null, RequestParams(requestParameters));
101+
///<summary>GET on /_slm/status <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</para></summary>
102+
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
103+
[MapsApi("slm.get_status", "")]
104+
public Task<TResponse> GetStatusAsync<TResponse>(GetSnapshotLifecycleManagementStatusRequestParameters requestParameters = null, CancellationToken ctx = default)
105+
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(GET, "_slm/status", ctx, null, RequestParams(requestParameters));
97106
///<summary>PUT on /_slm/policy/{policy_id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html</para></summary>
98107
///<param name = "policyId">The id of the snapshot lifecycle policy</param>
99108
///<param name = "body">The snapshot lifecycle policy definition to register</param>
@@ -107,5 +116,23 @@ public TResponse PutSnapshotLifecycle<TResponse>(string policyId, PostData body,
107116
[MapsApi("slm.put_lifecycle", "policy_id, body")]
108117
public Task<TResponse> PutSnapshotLifecycleAsync<TResponse>(string policyId, PostData body, PutSnapshotLifecycleRequestParameters requestParameters = null, CancellationToken ctx = default)
109118
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(PUT, Url($"_slm/policy/{policyId:policyId}"), ctx, body, RequestParams(requestParameters));
119+
///<summary>POST on /_slm/start <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</para></summary>
120+
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
121+
public TResponse Start<TResponse>(StartSnapshotLifecycleManagementRequestParameters requestParameters = null)
122+
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(POST, "_slm/start", null, RequestParams(requestParameters));
123+
///<summary>POST on /_slm/start <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</para></summary>
124+
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
125+
[MapsApi("slm.start", "")]
126+
public Task<TResponse> StartAsync<TResponse>(StartSnapshotLifecycleManagementRequestParameters requestParameters = null, CancellationToken ctx = default)
127+
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(POST, "_slm/start", ctx, null, RequestParams(requestParameters));
128+
///<summary>POST on /_slm/stop <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</para></summary>
129+
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
130+
public TResponse Stop<TResponse>(StopSnapshotLifecycleManagementRequestParameters requestParameters = null)
131+
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(POST, "_slm/stop", null, RequestParams(requestParameters));
132+
///<summary>POST on /_slm/stop <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</para></summary>
133+
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
134+
[MapsApi("slm.stop", "")]
135+
public Task<TResponse> StopAsync<TResponse>(StopSnapshotLifecycleManagementRequestParameters requestParameters = null, CancellationToken ctx = default)
136+
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(POST, "_slm/stop", ctx, null, RequestParams(requestParameters));
110137
}
111138
}

src/Nest/Descriptors.SnapshotLifecycleManagement.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,14 @@ public partial class GetSnapshotLifecycleStatsDescriptor : RequestDescriptorBase
102102
// Request parameters
103103
}
104104

105+
///<summary>Descriptor for GetStatus <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-get-status.html</para></summary>
106+
public partial class GetSnapshotLifecycleManagementStatusDescriptor : RequestDescriptorBase<GetSnapshotLifecycleManagementStatusDescriptor, GetSnapshotLifecycleManagementStatusRequestParameters, IGetSnapshotLifecycleManagementStatusRequest>, IGetSnapshotLifecycleManagementStatusRequest
107+
{
108+
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementGetStatus;
109+
// values part of the url path
110+
// Request parameters
111+
}
112+
105113
///<summary>Descriptor for PutSnapshotLifecycle <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put.html</para></summary>
106114
public partial class PutSnapshotLifecycleDescriptor : RequestDescriptorBase<PutSnapshotLifecycleDescriptor, PutSnapshotLifecycleRequestParameters, IPutSnapshotLifecycleRequest>, IPutSnapshotLifecycleRequest
107115
{
@@ -122,4 +130,20 @@ protected PutSnapshotLifecycleDescriptor(): base()
122130
Id IPutSnapshotLifecycleRequest.PolicyId => Self.RouteValues.Get<Id>("policy_id");
123131
// Request parameters
124132
}
133+
134+
///<summary>Descriptor for Start <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-start.html</para></summary>
135+
public partial class StartSnapshotLifecycleManagementDescriptor : RequestDescriptorBase<StartSnapshotLifecycleManagementDescriptor, StartSnapshotLifecycleManagementRequestParameters, IStartSnapshotLifecycleManagementRequest>, IStartSnapshotLifecycleManagementRequest
136+
{
137+
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementStart;
138+
// values part of the url path
139+
// Request parameters
140+
}
141+
142+
///<summary>Descriptor for Stop <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-stop.html</para></summary>
143+
public partial class StopSnapshotLifecycleManagementDescriptor : RequestDescriptorBase<StopSnapshotLifecycleManagementDescriptor, StopSnapshotLifecycleManagementRequestParameters, IStopSnapshotLifecycleManagementRequest>, IStopSnapshotLifecycleManagementRequest
144+
{
145+
internal override ApiUrls ApiUrls => ApiUrlsLookups.SnapshotLifecycleManagementStop;
146+
// values part of the url path
147+
// Request parameters
148+
}
125149
}

src/Nest/ElasticClient.SnapshotLifecycleManagement.cs

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,30 @@ internal SnapshotLifecycleManagementNamespace(ElasticClient client): base(client
133133
/// </summary>
134134
public Task<GetSnapshotLifecycleStatsResponse> GetSnapshotLifecycleStatsAsync(IGetSnapshotLifecycleStatsRequest request, CancellationToken ct = default) => DoRequestAsync<IGetSnapshotLifecycleStatsRequest, GetSnapshotLifecycleStatsResponse>(request, request.RequestParameters, ct);
135135
/// <summary>
136+
/// <c>GET</c> request to the <c>slm.get_status</c> API, read more about this API online:
137+
/// <para></para>
138+
/// <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>
139+
/// </summary>
140+
public GetSnapshotLifecycleManagementStatusResponse GetStatus(Func<GetSnapshotLifecycleManagementStatusDescriptor, IGetSnapshotLifecycleManagementStatusRequest> selector = null) => GetStatus(selector.InvokeOrDefault(new GetSnapshotLifecycleManagementStatusDescriptor()));
141+
/// <summary>
142+
/// <c>GET</c> request to the <c>slm.get_status</c> API, read more about this API online:
143+
/// <para></para>
144+
/// <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>
145+
/// </summary>
146+
public Task<GetSnapshotLifecycleManagementStatusResponse> GetStatusAsync(Func<GetSnapshotLifecycleManagementStatusDescriptor, IGetSnapshotLifecycleManagementStatusRequest> selector = null, CancellationToken ct = default) => GetStatusAsync(selector.InvokeOrDefault(new GetSnapshotLifecycleManagementStatusDescriptor()), ct);
147+
/// <summary>
148+
/// <c>GET</c> request to the <c>slm.get_status</c> API, read more about this API online:
149+
/// <para></para>
150+
/// <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>
151+
/// </summary>
152+
public GetSnapshotLifecycleManagementStatusResponse GetStatus(IGetSnapshotLifecycleManagementStatusRequest request) => DoRequest<IGetSnapshotLifecycleManagementStatusRequest, GetSnapshotLifecycleManagementStatusResponse>(request, request.RequestParameters);
153+
/// <summary>
154+
/// <c>GET</c> request to the <c>slm.get_status</c> API, read more about this API online:
155+
/// <para></para>
156+
/// <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>
157+
/// </summary>
158+
public Task<GetSnapshotLifecycleManagementStatusResponse> GetStatusAsync(IGetSnapshotLifecycleManagementStatusRequest request, CancellationToken ct = default) => DoRequestAsync<IGetSnapshotLifecycleManagementStatusRequest, GetSnapshotLifecycleManagementStatusResponse>(request, request.RequestParameters, ct);
159+
/// <summary>
136160
/// <c>PUT</c> request to the <c>slm.put_lifecycle</c> API, read more about this API online:
137161
/// <para></para>
138162
/// <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>
@@ -156,5 +180,53 @@ internal SnapshotLifecycleManagementNamespace(ElasticClient client): base(client
156180
/// <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>
157181
/// </summary>
158182
public Task<PutSnapshotLifecycleResponse> PutSnapshotLifecycleAsync(IPutSnapshotLifecycleRequest request, CancellationToken ct = default) => DoRequestAsync<IPutSnapshotLifecycleRequest, PutSnapshotLifecycleResponse>(request, request.RequestParameters, ct);
183+
/// <summary>
184+
/// <c>POST</c> request to the <c>slm.start</c> API, read more about this API online:
185+
/// <para></para>
186+
/// <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>
187+
/// </summary>
188+
public StartSnapshotLifecycleManagementResponse Start(Func<StartSnapshotLifecycleManagementDescriptor, IStartSnapshotLifecycleManagementRequest> selector = null) => Start(selector.InvokeOrDefault(new StartSnapshotLifecycleManagementDescriptor()));
189+
/// <summary>
190+
/// <c>POST</c> request to the <c>slm.start</c> API, read more about this API online:
191+
/// <para></para>
192+
/// <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>
193+
/// </summary>
194+
public Task<StartSnapshotLifecycleManagementResponse> StartAsync(Func<StartSnapshotLifecycleManagementDescriptor, IStartSnapshotLifecycleManagementRequest> selector = null, CancellationToken ct = default) => StartAsync(selector.InvokeOrDefault(new StartSnapshotLifecycleManagementDescriptor()), ct);
195+
/// <summary>
196+
/// <c>POST</c> request to the <c>slm.start</c> API, read more about this API online:
197+
/// <para></para>
198+
/// <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>
199+
/// </summary>
200+
public StartSnapshotLifecycleManagementResponse Start(IStartSnapshotLifecycleManagementRequest request) => DoRequest<IStartSnapshotLifecycleManagementRequest, StartSnapshotLifecycleManagementResponse>(request, request.RequestParameters);
201+
/// <summary>
202+
/// <c>POST</c> request to the <c>slm.start</c> API, read more about this API online:
203+
/// <para></para>
204+
/// <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>
205+
/// </summary>
206+
public Task<StartSnapshotLifecycleManagementResponse> StartAsync(IStartSnapshotLifecycleManagementRequest request, CancellationToken ct = default) => DoRequestAsync<IStartSnapshotLifecycleManagementRequest, StartSnapshotLifecycleManagementResponse>(request, request.RequestParameters, ct);
207+
/// <summary>
208+
/// <c>POST</c> request to the <c>slm.stop</c> API, read more about this API online:
209+
/// <para></para>
210+
/// <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>
211+
/// </summary>
212+
public StopSnapshotLifecycleManagementResponse Stop(Func<StopSnapshotLifecycleManagementDescriptor, IStopSnapshotLifecycleManagementRequest> selector = null) => Stop(selector.InvokeOrDefault(new StopSnapshotLifecycleManagementDescriptor()));
213+
/// <summary>
214+
/// <c>POST</c> request to the <c>slm.stop</c> API, read more about this API online:
215+
/// <para></para>
216+
/// <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>
217+
/// </summary>
218+
public Task<StopSnapshotLifecycleManagementResponse> StopAsync(Func<StopSnapshotLifecycleManagementDescriptor, IStopSnapshotLifecycleManagementRequest> selector = null, CancellationToken ct = default) => StopAsync(selector.InvokeOrDefault(new StopSnapshotLifecycleManagementDescriptor()), ct);
219+
/// <summary>
220+
/// <c>POST</c> request to the <c>slm.stop</c> API, read more about this API online:
221+
/// <para></para>
222+
/// <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>
223+
/// </summary>
224+
public StopSnapshotLifecycleManagementResponse Stop(IStopSnapshotLifecycleManagementRequest request) => DoRequest<IStopSnapshotLifecycleManagementRequest, StopSnapshotLifecycleManagementResponse>(request, request.RequestParameters);
225+
/// <summary>
226+
/// <c>POST</c> request to the <c>slm.stop</c> API, read more about this API online:
227+
/// <para></para>
228+
/// <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>
229+
/// </summary>
230+
public Task<StopSnapshotLifecycleManagementResponse> StopAsync(IStopSnapshotLifecycleManagementRequest request, CancellationToken ct = default) => DoRequestAsync<IStopSnapshotLifecycleManagementRequest, StopSnapshotLifecycleManagementResponse>(request, request.RequestParameters, ct);
159231
}
160232
}

0 commit comments

Comments
 (0)