Skip to content

Implement snapshot repository cleanup #4145

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 2 commits into from
Oct 17, 2019
Merged
Show file tree
Hide file tree
Changes from all 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
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ public static class CodeConfiguration
"ml.set_upgrade_mode.json",
"ml.find_file_structure.json",
"monitoring.bulk.json",
"snapshot.cleanup_repository.json",
"ml.estimate_memory_usage.json",
"ml.estimate_memory_usage.json"
};


Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// -----------------------------------------------
//
// This file is automatically generated
//
// This file is automatically generated
// Please do not edit these files manually
// Run the following in the root of the repos:
//
Expand All @@ -24,181 +24,200 @@
// ReSharper disable once CheckNamespace
namespace Elasticsearch.Net.Specification.SnapshotApi
{
///<summary>Request options for Snapshot <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
///<summary>Request options for CleanupRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
public class CleanupRepositoryRequestParameters : RequestParameters<CleanupRepositoryRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
///<summary>Explicit operation timeout for connection to master node</summary>
public TimeSpan MasterTimeout
{
get => Q<TimeSpan>("master_timeout");
set => Q("master_timeout", value);
}

///<summary>Explicit operation timeout</summary>
public TimeSpan Timeout
{
get => Q<TimeSpan>("timeout");
set => Q("timeout", value);
}
}

///<summary>Request options for Snapshot <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
public class SnapshotRequestParameters : RequestParameters<SnapshotRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
///<summary>Explicit operation timeout for connection to master node</summary>
///<summary>Explicit operation timeout for connection to master node</summary>
public TimeSpan MasterTimeout
{
get => Q<TimeSpan>("master_timeout");
set => Q("master_timeout", value);
}

///<summary>Should this request wait until the operation has completed before returning</summary>
///<summary>Should this request wait until the operation has completed before returning</summary>
public bool? WaitForCompletion
{
get => Q<bool? >("wait_for_completion");
set => Q("wait_for_completion", value);
}
}

///<summary>Request options for CreateRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
///<summary>Request options for CreateRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
public class CreateRepositoryRequestParameters : RequestParameters<CreateRepositoryRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
///<summary>Explicit operation timeout for connection to master node</summary>
///<summary>Explicit operation timeout for connection to master node</summary>
public TimeSpan MasterTimeout
{
get => Q<TimeSpan>("master_timeout");
set => Q("master_timeout", value);
}

///<summary>Explicit operation timeout</summary>
///<summary>Explicit operation timeout</summary>
public TimeSpan Timeout
{
get => Q<TimeSpan>("timeout");
set => Q("timeout", value);
}

///<summary>Whether to verify the repository after creation</summary>
///<summary>Whether to verify the repository after creation</summary>
public bool? Verify
{
get => Q<bool? >("verify");
set => Q("verify", value);
}
}

///<summary>Request options for Delete <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
///<summary>Request options for Delete <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
public class DeleteSnapshotRequestParameters : RequestParameters<DeleteSnapshotRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
///<summary>Explicit operation timeout for connection to master node</summary>
///<summary>Explicit operation timeout for connection to master node</summary>
public TimeSpan MasterTimeout
{
get => Q<TimeSpan>("master_timeout");
set => Q("master_timeout", value);
}
}

///<summary>Request options for DeleteRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
///<summary>Request options for DeleteRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
public class DeleteRepositoryRequestParameters : RequestParameters<DeleteRepositoryRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
///<summary>Explicit operation timeout for connection to master node</summary>
///<summary>Explicit operation timeout for connection to master node</summary>
public TimeSpan MasterTimeout
{
get => Q<TimeSpan>("master_timeout");
set => Q("master_timeout", value);
}

///<summary>Explicit operation timeout</summary>
///<summary>Explicit operation timeout</summary>
public TimeSpan Timeout
{
get => Q<TimeSpan>("timeout");
set => Q("timeout", value);
}
}

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

///<summary>Explicit operation timeout for connection to master node</summary>
///<summary>Explicit operation timeout for connection to master node</summary>
public TimeSpan MasterTimeout
{
get => Q<TimeSpan>("master_timeout");
set => Q("master_timeout", value);
}

///<summary>Whether to show verbose snapshot info or only show the basic info found in the repository index blob</summary>
///<summary>Whether to show verbose snapshot info or only show the basic info found in the repository index blob</summary>
public bool? Verbose
{
get => Q<bool? >("verbose");
set => Q("verbose", value);
}
}

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

///<summary>Explicit operation timeout for connection to master node</summary>
///<summary>Explicit operation timeout for connection to master node</summary>
public TimeSpan MasterTimeout
{
get => Q<TimeSpan>("master_timeout");
set => Q("master_timeout", value);
}
}

///<summary>Request options for Restore <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
///<summary>Request options for Restore <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
public class RestoreRequestParameters : RequestParameters<RestoreRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
///<summary>Explicit operation timeout for connection to master node</summary>
///<summary>Explicit operation timeout for connection to master node</summary>
public TimeSpan MasterTimeout
{
get => Q<TimeSpan>("master_timeout");
set => Q("master_timeout", value);
}

///<summary>Should this request wait until the operation has completed before returning</summary>
///<summary>Should this request wait until the operation has completed before returning</summary>
public bool? WaitForCompletion
{
get => Q<bool? >("wait_for_completion");
set => Q("wait_for_completion", value);
}
}

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

///<summary>Explicit operation timeout for connection to master node</summary>
///<summary>Explicit operation timeout for connection to master node</summary>
public TimeSpan MasterTimeout
{
get => Q<TimeSpan>("master_timeout");
set => Q("master_timeout", value);
}
}

///<summary>Request options for VerifyRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
///<summary>Request options for VerifyRepository <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
public class VerifyRepositoryRequestParameters : RequestParameters<VerifyRepositoryRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
///<summary>Explicit operation timeout for connection to master node</summary>
///<summary>Explicit operation timeout for connection to master node</summary>
public TimeSpan MasterTimeout
{
get => Q<TimeSpan>("master_timeout");
set => Q("master_timeout", value);
}

///<summary>Explicit operation timeout</summary>
///<summary>Explicit operation timeout</summary>
public TimeSpan Timeout
{
get => Q<TimeSpan>("timeout");
set => Q("timeout", value);
}
}
}
}
12 changes: 12 additions & 0 deletions src/Elasticsearch.Net/ElasticLowLevelClient.Snapshot.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,18 @@ internal LowLevelSnapshotNamespace(ElasticLowLevelClient client): base(client)
{
}

///<summary>POST on /_snapshot/{repository}/_cleanup <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
///<param name = "repository">A repository name</param>
///<param name = "body"></param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public TResponse CleanupRepository<TResponse>(string repository, PostData body, CleanupRepositoryRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(POST, Url($"_snapshot/{repository:repository}/_cleanup"), body, RequestParams(requestParameters));
///<summary>POST on /_snapshot/{repository}/_cleanup <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
///<param name = "repository">A repository name</param>
///<param name = "body"></param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> CleanupRepositoryAsync<TResponse>(string repository, PostData body, CleanupRepositoryRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(POST, Url($"_snapshot/{repository:repository}/_cleanup"), ctx, body, RequestParams(requestParameters));
///<summary>PUT on /_snapshot/{repository}/{snapshot} <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
///<param name = "repository">A repository name</param>
///<param name = "snapshot">A snapshot name</param>
Expand Down
Loading