Skip to content

Commit 4e94249

Browse files
codebrainMpdreamz
authored andcommitted
Implement snapshot repository cleanup (#4145)
* Implement snapshot repository cleanup * add TODO on CleanUpRepositoryApiTests
1 parent 1335806 commit 4e94249

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,181 +24,200 @@
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;
31-
///<summary>Explicit operation timeout for connection to master node</summary>
50+
///<summary>Explicit operation timeout for connection to master node</summary>
3251
public TimeSpan MasterTimeout
3352
{
3453
get => Q<TimeSpan>("master_timeout");
3554
set => Q("master_timeout", value);
3655
}
3756

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

46-
///<summary>Request options for CreateRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
65+
///<summary>Request options for CreateRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
4766
public class CreateRepositoryRequestParameters : RequestParameters<CreateRepositoryRequestParameters>
4867
{
4968
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
50-
///<summary>Explicit operation timeout for connection to master node</summary>
69+
///<summary>Explicit operation timeout for connection to master node</summary>
5170
public TimeSpan MasterTimeout
5271
{
5372
get => Q<TimeSpan>("master_timeout");
5473
set => Q("master_timeout", value);
5574
}
5675

57-
///<summary>Explicit operation timeout</summary>
76+
///<summary>Explicit operation timeout</summary>
5877
public TimeSpan Timeout
5978
{
6079
get => Q<TimeSpan>("timeout");
6180
set => Q("timeout", value);
6281
}
6382

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

72-
///<summary>Request options for Delete <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
91+
///<summary>Request options for Delete <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
7392
public class DeleteSnapshotRequestParameters : RequestParameters<DeleteSnapshotRequestParameters>
7493
{
7594
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
76-
///<summary>Explicit operation timeout for connection to master node</summary>
95+
///<summary>Explicit operation timeout for connection to master node</summary>
7796
public TimeSpan MasterTimeout
7897
{
7998
get => Q<TimeSpan>("master_timeout");
8099
set => Q("master_timeout", value);
81100
}
82101
}
83102

84-
///<summary>Request options for DeleteRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
103+
///<summary>Request options for DeleteRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
85104
public class DeleteRepositoryRequestParameters : RequestParameters<DeleteRepositoryRequestParameters>
86105
{
87106
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
88-
///<summary>Explicit operation timeout for connection to master node</summary>
107+
///<summary>Explicit operation timeout for connection to master node</summary>
89108
public TimeSpan MasterTimeout
90109
{
91110
get => Q<TimeSpan>("master_timeout");
92111
set => Q("master_timeout", value);
93112
}
94113

95-
///<summary>Explicit operation timeout</summary>
114+
///<summary>Explicit operation timeout</summary>
96115
public TimeSpan Timeout
97116
{
98117
get => Q<TimeSpan>("timeout");
99118
set => Q("timeout", value);
100119
}
101120
}
102121

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

114-
///<summary>Explicit operation timeout for connection to master node</summary>
133+
///<summary>Explicit operation timeout for connection to master node</summary>
115134
public TimeSpan MasterTimeout
116135
{
117136
get => Q<TimeSpan>("master_timeout");
118137
set => Q("master_timeout", value);
119138
}
120139

121-
///<summary>Whether to show verbose snapshot info or only show the basic info found in the repository index blob</summary>
140+
///<summary>Whether to show verbose snapshot info or only show the basic info found in the repository index blob</summary>
122141
public bool? Verbose
123142
{
124143
get => Q<bool? >("verbose");
125144
set => Q("verbose", value);
126145
}
127146
}
128147

129-
///<summary>Request options for GetRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
148+
///<summary>Request options for GetRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
130149
public class GetRepositoryRequestParameters : RequestParameters<GetRepositoryRequestParameters>
131150
{
132151
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
133-
///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
152+
///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
134153
public bool? Local
135154
{
136155
get => Q<bool? >("local");
137156
set => Q("local", value);
138157
}
139158

140-
///<summary>Explicit operation timeout for connection to master node</summary>
159+
///<summary>Explicit operation timeout for connection to master node</summary>
141160
public TimeSpan MasterTimeout
142161
{
143162
get => Q<TimeSpan>("master_timeout");
144163
set => Q("master_timeout", value);
145164
}
146165
}
147166

148-
///<summary>Request options for Restore <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
167+
///<summary>Request options for Restore <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
149168
public class RestoreRequestParameters : RequestParameters<RestoreRequestParameters>
150169
{
151170
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
152-
///<summary>Explicit operation timeout for connection to master node</summary>
171+
///<summary>Explicit operation timeout for connection to master node</summary>
153172
public TimeSpan MasterTimeout
154173
{
155174
get => Q<TimeSpan>("master_timeout");
156175
set => Q("master_timeout", value);
157176
}
158177

159-
///<summary>Should this request wait until the operation has completed before returning</summary>
178+
///<summary>Should this request wait until the operation has completed before returning</summary>
160179
public bool? WaitForCompletion
161180
{
162181
get => Q<bool? >("wait_for_completion");
163182
set => Q("wait_for_completion", value);
164183
}
165184
}
166185

167-
///<summary>Request options for Status <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
186+
///<summary>Request options for Status <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
168187
public class SnapshotStatusRequestParameters : RequestParameters<SnapshotStatusRequestParameters>
169188
{
170189
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
171-
///<summary>Whether to ignore unavailable snapshots, defaults to false which means a SnapshotMissingException is thrown</summary>
190+
///<summary>Whether to ignore unavailable snapshots, defaults to false which means a SnapshotMissingException is thrown</summary>
172191
public bool? IgnoreUnavailable
173192
{
174193
get => Q<bool? >("ignore_unavailable");
175194
set => Q("ignore_unavailable", value);
176195
}
177196

178-
///<summary>Explicit operation timeout for connection to master node</summary>
197+
///<summary>Explicit operation timeout for connection to master node</summary>
179198
public TimeSpan MasterTimeout
180199
{
181200
get => Q<TimeSpan>("master_timeout");
182201
set => Q("master_timeout", value);
183202
}
184203
}
185204

186-
///<summary>Request options for VerifyRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
205+
///<summary>Request options for VerifyRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
187206
public class VerifyRepositoryRequestParameters : RequestParameters<VerifyRepositoryRequestParameters>
188207
{
189208
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
190-
///<summary>Explicit operation timeout for connection to master node</summary>
209+
///<summary>Explicit operation timeout for connection to master node</summary>
191210
public TimeSpan MasterTimeout
192211
{
193212
get => Q<TimeSpan>("master_timeout");
194213
set => Q("master_timeout", value);
195214
}
196215

197-
///<summary>Explicit operation timeout</summary>
216+
///<summary>Explicit operation timeout</summary>
198217
public TimeSpan Timeout
199218
{
200219
get => Q<TimeSpan>("timeout");
201220
set => Q("timeout", value);
202221
}
203222
}
204-
}
223+
}

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)