Skip to content

Commit daed68d

Browse files
codebrainMpdreamz
authored andcommitted
Implement snapshot repository cleanup (#4145)
* Implement snapshot repository cleanup * add TODO on CleanUpRepositoryApiTests (cherry picked from commit 4e94249)
1 parent 5c4d375 commit daed68d

File tree

11 files changed

+390
-172
lines changed

11 files changed

+390
-172
lines changed

src/CodeGeneration/ApiGenerator/Configuration/CodeConfiguration.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ public static class CodeConfiguration
4343
"ml.set_upgrade_mode.json",
4444
"ml.find_file_structure.json",
4545
"monitoring.bulk.json",
46-
"snapshot.cleanup_repository.json",
47-
"ml.estimate_memory_usage.json",
46+
"ml.estimate_memory_usage.json"
4847
};
4948

5049

Lines changed: 52 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
22
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
3-
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
4-
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
3+
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
4+
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
55
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
66
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
77
// -----------------------------------------------
8-
//
9-
// This file is automatically generated
8+
//
9+
// This file is automatically generated
1010
// Please do not edit these files manually
1111
// Run the following in the root of the repos:
1212
//
@@ -24,190 +24,209 @@
2424
// ReSharper disable once CheckNamespace
2525
namespace Elasticsearch.Net.Specification.SnapshotApi
2626
{
27-
///<summary>Request options for Snapshot <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
27+
///<summary>Request options for CleanupRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
28+
public class CleanupRepositoryRequestParameters : RequestParameters<CleanupRepositoryRequestParameters>
29+
{
30+
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
31+
///<summary>Explicit operation timeout for connection to master node</summary>
32+
public TimeSpan MasterTimeout
33+
{
34+
get => Q<TimeSpan>("master_timeout");
35+
set => Q("master_timeout", value);
36+
}
37+
38+
///<summary>Explicit operation timeout</summary>
39+
public TimeSpan Timeout
40+
{
41+
get => Q<TimeSpan>("timeout");
42+
set => Q("timeout", value);
43+
}
44+
}
45+
46+
///<summary>Request options for Snapshot <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
2847
public class SnapshotRequestParameters : RequestParameters<SnapshotRequestParameters>
2948
{
3049
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
3150
public override bool SupportsBody => true;
32-
///<summary>Explicit operation timeout for connection to master node</summary>
51+
///<summary>Explicit operation timeout for connection to master node</summary>
3352
public TimeSpan MasterTimeout
3453
{
3554
get => Q<TimeSpan>("master_timeout");
3655
set => Q("master_timeout", value);
3756
}
3857

39-
///<summary>Should this request wait until the operation has completed before returning</summary>
58+
///<summary>Should this request wait until the operation has completed before returning</summary>
4059
public bool? WaitForCompletion
4160
{
4261
get => Q<bool? >("wait_for_completion");
4362
set => Q("wait_for_completion", value);
4463
}
4564
}
4665

47-
///<summary>Request options for CreateRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
66+
///<summary>Request options for CreateRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
4867
public class CreateRepositoryRequestParameters : RequestParameters<CreateRepositoryRequestParameters>
4968
{
5069
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
5170
public override bool SupportsBody => true;
52-
///<summary>Explicit operation timeout for connection to master node</summary>
71+
///<summary>Explicit operation timeout for connection to master node</summary>
5372
public TimeSpan MasterTimeout
5473
{
5574
get => Q<TimeSpan>("master_timeout");
5675
set => Q("master_timeout", value);
5776
}
5877

59-
///<summary>Explicit operation timeout</summary>
78+
///<summary>Explicit operation timeout</summary>
6079
public TimeSpan Timeout
6180
{
6281
get => Q<TimeSpan>("timeout");
6382
set => Q("timeout", value);
6483
}
6584

66-
///<summary>Whether to verify the repository after creation</summary>
85+
///<summary>Whether to verify the repository after creation</summary>
6786
public bool? Verify
6887
{
6988
get => Q<bool? >("verify");
7089
set => Q("verify", value);
7190
}
7291
}
7392

74-
///<summary>Request options for Delete <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
93+
///<summary>Request options for Delete <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
7594
public class DeleteSnapshotRequestParameters : RequestParameters<DeleteSnapshotRequestParameters>
7695
{
7796
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
7897
public override bool SupportsBody => false;
79-
///<summary>Explicit operation timeout for connection to master node</summary>
98+
///<summary>Explicit operation timeout for connection to master node</summary>
8099
public TimeSpan MasterTimeout
81100
{
82101
get => Q<TimeSpan>("master_timeout");
83102
set => Q("master_timeout", value);
84103
}
85104
}
86105

87-
///<summary>Request options for DeleteRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
106+
///<summary>Request options for DeleteRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
88107
public class DeleteRepositoryRequestParameters : RequestParameters<DeleteRepositoryRequestParameters>
89108
{
90109
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
91110
public override bool SupportsBody => false;
92-
///<summary>Explicit operation timeout for connection to master node</summary>
111+
///<summary>Explicit operation timeout for connection to master node</summary>
93112
public TimeSpan MasterTimeout
94113
{
95114
get => Q<TimeSpan>("master_timeout");
96115
set => Q("master_timeout", value);
97116
}
98117

99-
///<summary>Explicit operation timeout</summary>
118+
///<summary>Explicit operation timeout</summary>
100119
public TimeSpan Timeout
101120
{
102121
get => Q<TimeSpan>("timeout");
103122
set => Q("timeout", value);
104123
}
105124
}
106125

107-
///<summary>Request options for Get <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
126+
///<summary>Request options for Get <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
108127
public class GetSnapshotRequestParameters : RequestParameters<GetSnapshotRequestParameters>
109128
{
110129
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
111130
public override bool SupportsBody => false;
112-
///<summary>Whether to ignore unavailable snapshots, defaults to false which means a SnapshotMissingException is thrown</summary>
131+
///<summary>Whether to ignore unavailable snapshots, defaults to false which means a SnapshotMissingException is thrown</summary>
113132
public bool? IgnoreUnavailable
114133
{
115134
get => Q<bool? >("ignore_unavailable");
116135
set => Q("ignore_unavailable", value);
117136
}
118137

119-
///<summary>Explicit operation timeout for connection to master node</summary>
138+
///<summary>Explicit operation timeout for connection to master node</summary>
120139
public TimeSpan MasterTimeout
121140
{
122141
get => Q<TimeSpan>("master_timeout");
123142
set => Q("master_timeout", value);
124143
}
125144

126-
///<summary>Whether to show verbose snapshot info or only show the basic info found in the repository index blob</summary>
145+
///<summary>Whether to show verbose snapshot info or only show the basic info found in the repository index blob</summary>
127146
public bool? Verbose
128147
{
129148
get => Q<bool? >("verbose");
130149
set => Q("verbose", value);
131150
}
132151
}
133152

134-
///<summary>Request options for GetRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
153+
///<summary>Request options for GetRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
135154
public class GetRepositoryRequestParameters : RequestParameters<GetRepositoryRequestParameters>
136155
{
137156
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
138157
public override bool SupportsBody => false;
139-
///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
158+
///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
140159
public bool? Local
141160
{
142161
get => Q<bool? >("local");
143162
set => Q("local", value);
144163
}
145164

146-
///<summary>Explicit operation timeout for connection to master node</summary>
165+
///<summary>Explicit operation timeout for connection to master node</summary>
147166
public TimeSpan MasterTimeout
148167
{
149168
get => Q<TimeSpan>("master_timeout");
150169
set => Q("master_timeout", value);
151170
}
152171
}
153172

154-
///<summary>Request options for Restore <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
173+
///<summary>Request options for Restore <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
155174
public class RestoreRequestParameters : RequestParameters<RestoreRequestParameters>
156175
{
157176
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
158177
public override bool SupportsBody => true;
159-
///<summary>Explicit operation timeout for connection to master node</summary>
178+
///<summary>Explicit operation timeout for connection to master node</summary>
160179
public TimeSpan MasterTimeout
161180
{
162181
get => Q<TimeSpan>("master_timeout");
163182
set => Q("master_timeout", value);
164183
}
165184

166-
///<summary>Should this request wait until the operation has completed before returning</summary>
185+
///<summary>Should this request wait until the operation has completed before returning</summary>
167186
public bool? WaitForCompletion
168187
{
169188
get => Q<bool? >("wait_for_completion");
170189
set => Q("wait_for_completion", value);
171190
}
172191
}
173192

174-
///<summary>Request options for Status <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
193+
///<summary>Request options for Status <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
175194
public class SnapshotStatusRequestParameters : RequestParameters<SnapshotStatusRequestParameters>
176195
{
177196
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
178197
public override bool SupportsBody => false;
179-
///<summary>Whether to ignore unavailable snapshots, defaults to false which means a SnapshotMissingException is thrown</summary>
198+
///<summary>Whether to ignore unavailable snapshots, defaults to false which means a SnapshotMissingException is thrown</summary>
180199
public bool? IgnoreUnavailable
181200
{
182201
get => Q<bool? >("ignore_unavailable");
183202
set => Q("ignore_unavailable", value);
184203
}
185204

186-
///<summary>Explicit operation timeout for connection to master node</summary>
205+
///<summary>Explicit operation timeout for connection to master node</summary>
187206
public TimeSpan MasterTimeout
188207
{
189208
get => Q<TimeSpan>("master_timeout");
190209
set => Q("master_timeout", value);
191210
}
192211
}
193212

194-
///<summary>Request options for VerifyRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
213+
///<summary>Request options for VerifyRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
195214
public class VerifyRepositoryRequestParameters : RequestParameters<VerifyRepositoryRequestParameters>
196215
{
197216
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
198217
public override bool SupportsBody => false;
199-
///<summary>Explicit operation timeout for connection to master node</summary>
218+
///<summary>Explicit operation timeout for connection to master node</summary>
200219
public TimeSpan MasterTimeout
201220
{
202221
get => Q<TimeSpan>("master_timeout");
203222
set => Q("master_timeout", value);
204223
}
205224

206-
///<summary>Explicit operation timeout</summary>
225+
///<summary>Explicit operation timeout</summary>
207226
public TimeSpan Timeout
208227
{
209228
get => Q<TimeSpan>("timeout");
210229
set => Q("timeout", value);
211230
}
212231
}
213-
}
232+
}

src/Elasticsearch.Net/ElasticLowLevelClient.Snapshot.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ internal LowLevelSnapshotNamespace(ElasticLowLevelClient client): base(client)
4343
{
4444
}
4545

46+
///<summary>POST on /_snapshot/{repository}/_cleanup <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
47+
///<param name = "repository">A repository name</param>
48+
///<param name = "body"></param>
49+
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
50+
public TResponse CleanupRepository<TResponse>(string repository, PostData body, CleanupRepositoryRequestParameters requestParameters = null)
51+
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(POST, Url($"_snapshot/{repository:repository}/_cleanup"), body, RequestParams(requestParameters));
52+
///<summary>POST on /_snapshot/{repository}/_cleanup <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
53+
///<param name = "repository">A repository name</param>
54+
///<param name = "body"></param>
55+
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
56+
public Task<TResponse> CleanupRepositoryAsync<TResponse>(string repository, PostData body, CleanupRepositoryRequestParameters requestParameters = null, CancellationToken ctx = default)
57+
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(POST, Url($"_snapshot/{repository:repository}/_cleanup"), ctx, body, RequestParams(requestParameters));
4658
///<summary>PUT on /_snapshot/{repository}/{snapshot} <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
4759
///<param name = "repository">A repository name</param>
4860
///<param name = "snapshot">A snapshot name</param>

0 commit comments

Comments
 (0)