From 7fec166b9edcc5f1baf5cb318cae89784af3b76b Mon Sep 17 00:00:00 2001 From: yj7o5 Date: Sun, 4 Oct 2020 15:01:19 -0500 Subject: [PATCH 01/10] add CancellationToken to IOctopusAsyncClient methods --- source/Octopus.Client/IOctopusAsyncClient.cs | 54 +++++++---- source/Octopus.Client/OctopusAsyncClient.cs | 97 ++++++++++++-------- 2 files changed, 93 insertions(+), 58 deletions(-) diff --git a/source/Octopus.Client/IOctopusAsyncClient.cs b/source/Octopus.Client/IOctopusAsyncClient.cs index da9dcf279..1c74b6840 100644 --- a/source/Octopus.Client/IOctopusAsyncClient.cs +++ b/source/Octopus.Client/IOctopusAsyncClient.cs @@ -3,6 +3,7 @@ using System.ComponentModel; using System.IO; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Exceptions; using Octopus.Client.Model; @@ -83,8 +84,9 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path from which to fetch the resources. /// If the path is a URI template, parameters to use for substitution. + /// /// The collection of resources from the server. - Task> List(string path, object pathParameters = null); + Task> List(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)); /// /// Fetches a collection of resources from the server using the HTTP GET verb. All result pages will be retrieved. @@ -101,8 +103,9 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path from which to fetch the resources. /// If the path is a URI template, parameters to use for substitution. + /// /// The collection of resources from the server. - Task> ListAll(string path, object pathParameters = null); + Task> ListAll(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)); /// /// Fetches a collection of resources from the server one page at a time using the HTTP GET verb. @@ -122,8 +125,9 @@ public interface IOctopusAsyncClient : IDisposable /// A callback invoked for each page of data found. If the callback returns true, the next /// page will also be requested. /// + /// /// The collection of resources from the server. - Task Paginate(string path, Func, bool> getNextPage); + Task Paginate(string path, Func, bool> getNextPage, CancellationToken token = default(CancellationToken)); /// /// Fetches a collection of resources from the server one page at a time using the HTTP GET verb. @@ -144,8 +148,9 @@ public interface IOctopusAsyncClient : IDisposable /// A callback invoked for each page of data found. If the callback returns true, the next /// page will also be requested. /// + /// /// The collection of resources from the server. - Task Paginate(string path, object pathParameters, Func, bool> getNextPage); + Task Paginate(string path, object pathParameters, Func, bool> getNextPage, CancellationToken token = default(CancellationToken)); /// /// Fetches a single resource from the server using the HTTP GET verb. @@ -162,8 +167,9 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path from which to fetch the resource. /// If the path is a URI template, parameters to use for substitution. + /// /// The resource from the server. - Task Get(string path, object pathParameters = null); + Task Get(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)); /// /// Creates a resource at the given URI on the server using the POST verb, then performs a fresh GET request to fetch @@ -182,8 +188,9 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. + /// /// The latest copy of the resource from the server. - Task Create(string path, TResource resource, object pathParameters = null); + Task Create(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)); /// /// Sends a command to a resource at the given URI on the server using the POST verb. @@ -201,7 +208,8 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - Task Post(string path, TResource resource, object pathParameters = null); + /// + Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)); /// /// Sends a command to a resource at the given URI on the server using the POST verb, and retrieve the response. @@ -219,7 +227,8 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - Task Post(string path, TResource resource, object pathParameters = null); + /// + Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)); /// /// Sends a command to a resource at the given URI on the server using the POST verb. @@ -235,7 +244,8 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 400: If there was a problem with the request provided by the user. /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. - Task Post(string path); + /// + Task Post(string path, CancellationToken token = default(CancellationToken)); /// /// Sends a command to a resource at the given URI on the server using the PUT verb. @@ -252,7 +262,8 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. /// The resource to create. - Task Put(string path, TResource resource); + /// + Task Put(string path, TResource resource, CancellationToken token = default(CancellationToken)); /// /// Sends a command to a resource at the given URI on the server using the PUT verb. @@ -268,7 +279,8 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 400: If there was a problem with the request provided by the user. /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. - Task Put(string path); + /// + Task Put(string path, CancellationToken token = default(CancellationToken)); /// /// Sends a command to a resource at the given URI on the server using the PUT verb. @@ -286,7 +298,8 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - Task Put(string path, TResource resource, object pathParameters = null); + /// + Task Put(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)); /// /// Updates the resource at the given URI on the server using the PUT verb, then performs a fresh GET request to reload @@ -305,8 +318,9 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the resource to update. /// The resource to update. /// If the path is a URI template, parameters to use for substitution. + /// /// The latest copy of the resource from the server. - Task Update(string path, TResource resource, object pathParameters = null); + Task Update(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)); /// /// Deletes the resource at the given URI from the server using a the DELETE verb. Deletes in Octopus happen @@ -328,7 +342,7 @@ public interface IOctopusAsyncClient : IDisposable /// If the path is a URI template, parameters to use for substitution. /// An optional resource to pass as the body of the request. /// A task resource that provides details about the background task that deletes the specified resource. - Task Delete(string path, object pathParameters = null, object resource = null); + Task Delete(string path, object pathParameters = null, object resource = null, CancellationToken token = default(CancellationToken)); /// /// Fetches raw content from the resource at the specified path, using the GET verb. @@ -345,15 +359,17 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path to the resource to fetch. /// If the path is a URI template, parameters to use for substitution. + /// /// A stream containing the content of the resource. - Task GetContent(string path, object pathParameters = null); + Task GetContent(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)); /// /// Creates or updates the raw content of the resource at the specified path, using the PUT verb. /// /// The path to the resource to create or update. /// A stream containing content of the resource. - Task PutContent(string path, Stream contentStream); + /// + Task PutContent(string path, Stream contentStream, CancellationToken token = default(CancellationToken)); Uri QualifyUri(string path, object parameters = null); @@ -361,14 +377,16 @@ public interface IOctopusAsyncClient : IDisposable /// Sign in /// /// + /// /// - Task SignIn(LoginCommand loginCommand); + Task SignIn(LoginCommand loginCommand, CancellationToken token = default(CancellationToken)); /// /// Sign out /// + /// /// - Task SignOut(); + Task SignOut(CancellationToken token = default(CancellationToken)); /// /// Get a repository for the given space diff --git a/source/Octopus.Client/OctopusAsyncClient.cs b/source/Octopus.Client/OctopusAsyncClient.cs index 096e01ba0..5898f0fd6 100644 --- a/source/Octopus.Client/OctopusAsyncClient.cs +++ b/source/Octopus.Client/OctopusAsyncClient.cs @@ -15,6 +15,7 @@ using System.Threading.Tasks; using Octopus.Client.Logging; using Octopus.Client.Util; +using System.Threading; namespace Octopus.Client { @@ -168,13 +169,13 @@ private static async Task Create(OctopusServerEndpoint serv /// public bool IsUsingSecureConnection => serverEndpoint.IsUsingSecureConnection; - public async Task SignIn(LoginCommand loginCommand) + public async Task SignIn(LoginCommand loginCommand, CancellationToken token = default(CancellationToken)) { if (loginCommand.State == null) { loginCommand.State = new LoginState { UsingSecureConnection = IsUsingSecureConnection }; } - await Post(await Repository.Link("SignIn").ConfigureAwait(false), loginCommand).ConfigureAwait(false); + await Post(await Repository.Link("SignIn").ConfigureAwait(false), loginCommand, token: token).ConfigureAwait(false); // Capture the cookie name here so that the Dispatch method does not rely on the rootDocument to get the InstallationId antiforgeryCookieName = cookieContainer.GetCookies(cookieOriginUri) @@ -184,9 +185,9 @@ public async Task SignIn(LoginCommand loginCommand) Repository = new OctopusAsyncRepository(this); } - public async Task SignOut() + public async Task SignOut(CancellationToken token = default(CancellationToken)) { - await Post(await Repository.Link("SignOut").ConfigureAwait(false)).ConfigureAwait(false); + await Post(await Repository.Link("SignOut").ConfigureAwait(false), token: token).ConfigureAwait(false); antiforgeryCookieName = null; } @@ -225,14 +226,15 @@ public async Task SignOut() /// /// The path from which to fetch the resource. /// If the path is a URI template, parameters to use for substitution. + /// /// /// The resource from the server. /// - public async Task Get(string path, object pathParameters = null) + public async Task Get(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path, pathParameters); - var response = await DispatchRequest(new OctopusRequest("GET", uri), true).ConfigureAwait(false); + var response = await DispatchRequest(new OctopusRequest("GET", uri), true, token).ConfigureAwait(false); return response.ResponseResource; } @@ -246,12 +248,13 @@ public async Task Get(string path, object pathParameters = /// /// The path from which to fetch the resources. /// If the path is a URI template, parameters to use for substitution. + /// The token to request cancellation of the task /// /// The collection of resources from the server. /// - public async Task> List(string path, object pathParameters = null) + public async Task> List(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)) { - return await Get>(path, pathParameters).ConfigureAwait(false); + return await Get>(path, pathParameters, token).ConfigureAwait(false); } /// @@ -261,17 +264,18 @@ public async Task> List(string path, ob /// /// The path from which to fetch the resources. /// If the path is a URI template, parameters to use for substitution. + /// /// /// The collection of resources from the server. /// - public async Task> ListAll(string path, object pathParameters = null) + public async Task> ListAll(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)) { var resources = new List(); await Paginate(path, pathParameters, r => { resources.AddRange(r.Items); return true; - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); return resources; } @@ -285,9 +289,10 @@ await Paginate(path, pathParameters, r => /// A callback invoked for each page of data found. If the callback returns true, the next /// page will also be requested. /// - public async Task Paginate(string path, object pathParameters, Func, bool> getNextPage) + /// + public async Task Paginate(string path, object pathParameters, Func, bool> getNextPage, CancellationToken token = default(CancellationToken)) { - var page = await List(path, pathParameters).ConfigureAwait(false); + var page = await List(path, pathParameters, token).ConfigureAwait(false); while (getNextPage(page) && page.Items.Count > 0 && page.HasLink("Page.Next")) { @@ -304,9 +309,10 @@ public async Task Paginate(string path, object pathParameters, Functrue, the next /// page will also be requested. /// - public Task Paginate(string path, Func, bool> getNextPage) + /// + public Task Paginate(string path, Func, bool> getNextPage, CancellationToken token = default(CancellationToken)) { - return Paginate(path, null, getNextPage); + return Paginate(path, null, getNextPage, token); } /// @@ -317,15 +323,16 @@ public Task Paginate(string path, Func, /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. + /// /// /// The latest copy of the resource from the server. /// - public async Task Create(string path, TResource resource, object pathParameters = null) + public async Task Create(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path, pathParameters); - var response = await DispatchRequest(new OctopusRequest("POST", uri, requestResource: resource), true).ConfigureAwait(false); - return await Get(response.Location).ConfigureAwait(false); + var response = await DispatchRequest(new OctopusRequest("POST", uri, requestResource: resource), true, token).ConfigureAwait(false); + return await Get(response.Location, token: token).ConfigureAwait(false); } /// @@ -335,11 +342,12 @@ public async Task Create(string path, TResource resource, /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - public Task Post(string path, TResource resource, object pathParameters = null) + /// + public Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path, pathParameters); - return DispatchRequest(new OctopusRequest("POST", uri, requestResource: resource), false); + return DispatchRequest(new OctopusRequest("POST", uri, requestResource: resource), false, token); } /// @@ -350,10 +358,11 @@ public Task Post(string path, TResource resource, object pathParamete /// The path to the container resource. /// The resource to post. /// If the path is a URI template, parameters to use for substitution. - public async Task Post(string path, TResource resource, object pathParameters = null) + /// + public async Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path, pathParameters); - var response = await DispatchRequest(new OctopusRequest("POST", uri, requestResource: resource), true).ConfigureAwait(false); + var response = await DispatchRequest(new OctopusRequest("POST", uri, requestResource: resource), true, token).ConfigureAwait(false); return response.ResponseResource; } @@ -361,11 +370,12 @@ public async Task Post(string path, TResource r /// Sends a command to a resource at the given URI on the server using the POST verb. /// /// The path to the container resource. - public Task Post(string path) + /// + public Task Post(string path, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path); - return DispatchRequest(new OctopusRequest("POST", uri), false); + return DispatchRequest(new OctopusRequest("POST", uri), false, token); } /// @@ -383,11 +393,12 @@ public Task Post(string path) /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. /// The resource to create. - public Task Put(string path, TResource resource) + /// + public Task Put(string path, TResource resource, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path); - return DispatchRequest(new OctopusRequest("PUT", uri, requestResource: resource), false); + return DispatchRequest(new OctopusRequest("PUT", uri, requestResource: resource), false, token); } /// @@ -404,11 +415,12 @@ public Task Put(string path, TResource resource) /// HTTP 400: If there was a problem with the request provided by the user. /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. - public Task Put(string path) + /// + public Task Put(string path, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path); - return DispatchRequest(new OctopusRequest("PUT", uri), false); + return DispatchRequest(new OctopusRequest("PUT", uri), false, token); } /// @@ -418,11 +430,12 @@ public Task Put(string path) /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - public Task Put(string path, TResource resource, object pathParameters = null) + /// + public Task Put(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path, pathParameters); - return DispatchRequest(new OctopusRequest("PUT", uri, requestResource: resource), false); + return DispatchRequest(new OctopusRequest("PUT", uri, requestResource: resource), false, token); } /// @@ -431,11 +444,12 @@ public Task Put(string path, TResource resource, object pathParameter /// The path to the resource to delete. /// If the path is a URI template, parameters to use for substitution. /// An optional resource to pass as the body of the request. - public Task Delete(string path, object pathParameters = null, object resource = null) + /// + public Task Delete(string path, object pathParameters = null, object resource = null, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path, pathParameters); - return DispatchRequest(new OctopusRequest("DELETE", uri, resource), true); + return DispatchRequest(new OctopusRequest("DELETE", uri, resource), true, token); } /// @@ -446,15 +460,16 @@ public Task Delete(string path, object pathParameters = null, object resource = /// The path to the resource to update. /// The resource to update. /// If the path is a URI template, parameters to use for substitution. + /// /// /// The latest copy of the resource from the server. /// - public async Task Update(string path, TResource resource, object pathParameters = null) + public async Task Update(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path, pathParameters); - await DispatchRequest(new OctopusRequest("PUT", uri, requestResource: resource), false).ConfigureAwait(false); - var result = await DispatchRequest(new OctopusRequest("GET", uri), true).ConfigureAwait(false); + await DispatchRequest(new OctopusRequest("PUT", uri, requestResource: resource), false, token).ConfigureAwait(false); + var result = await DispatchRequest(new OctopusRequest("GET", uri), true, token).ConfigureAwait(false); return result.ResponseResource; } @@ -473,11 +488,12 @@ public async Task Update(string path, TResource resource, /// HTTP 404: If the specified resource does not exist on the server. /// The path to the resource to fetch. /// If the path is a URI template, parameters to use for substitution. + /// /// A stream containing the content of the resource. - public async Task GetContent(string path, object pathParameters = null) + public async Task GetContent(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)) { var uri = QualifyUri(path, pathParameters); - var response = await DispatchRequest(new OctopusRequest("GET", uri), true).ConfigureAwait(false); + var response = await DispatchRequest(new OctopusRequest("GET", uri), true, token).ConfigureAwait(false); return response.ResponseResource; } @@ -486,11 +502,12 @@ public async Task GetContent(string path, object pathParameters = null) /// /// The path to the resource to create or update. /// A stream containing content of the resource. - public Task PutContent(string path, Stream contentStream) + /// + public Task PutContent(string path, Stream contentStream, CancellationToken token = default(CancellationToken)) { if (contentStream == null) throw new ArgumentNullException("contentStream"); var uri = QualifyUri(path); - return DispatchRequest(new OctopusRequest("PUT", uri, requestResource: contentStream), false); + return DispatchRequest(new OctopusRequest("PUT", uri, requestResource: contentStream), false, token); } public Uri QualifyUri(string path, object parameters = null) @@ -502,7 +519,7 @@ public Uri QualifyUri(string path, object parameters = null) return serverEndpoint.OctopusServer.Resolve(path); } - protected virtual async Task> DispatchRequest(OctopusRequest request, bool readResponse) + protected virtual async Task> DispatchRequest(OctopusRequest request, bool readResponse, CancellationToken token) { using (var message = new HttpRequestMessage()) { @@ -540,7 +557,7 @@ protected virtual async Task> DispatchRequest : HttpCompletionOption.ResponseHeadersRead; try { - using (var response = await client.SendAsync(message, completionOption).ConfigureAwait(false)) + using (var response = await client.SendAsync(message, completionOption, token).ConfigureAwait(false)) { AfterReceivedHttpResponse?.Invoke(response); From 86e2f6be3640c9a6c168f02cfe3d47d015aee9b9 Mon Sep 17 00:00:00 2001 From: yj7o5 Date: Mon, 5 Oct 2020 20:25:15 -0500 Subject: [PATCH 02/10] Remove redundant PUT definition and using latest default syntax --- source/Octopus.Client/IOctopusAsyncClient.cs | 53 +++++++----------- source/Octopus.Client/OctopusAsyncClient.cs | 57 ++++++-------------- 2 files changed, 35 insertions(+), 75 deletions(-) diff --git a/source/Octopus.Client/IOctopusAsyncClient.cs b/source/Octopus.Client/IOctopusAsyncClient.cs index 1c74b6840..b137c99c2 100644 --- a/source/Octopus.Client/IOctopusAsyncClient.cs +++ b/source/Octopus.Client/IOctopusAsyncClient.cs @@ -86,7 +86,7 @@ public interface IOctopusAsyncClient : IDisposable /// If the path is a URI template, parameters to use for substitution. /// /// The collection of resources from the server. - Task> List(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)); + Task> List(string path, object pathParameters = null, CancellationToken token = default); /// /// Fetches a collection of resources from the server using the HTTP GET verb. All result pages will be retrieved. @@ -105,7 +105,7 @@ public interface IOctopusAsyncClient : IDisposable /// If the path is a URI template, parameters to use for substitution. /// /// The collection of resources from the server. - Task> ListAll(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)); + Task> ListAll(string path, object pathParameters = null, CancellationToken token = default); /// /// Fetches a collection of resources from the server one page at a time using the HTTP GET verb. @@ -127,7 +127,7 @@ public interface IOctopusAsyncClient : IDisposable /// /// /// The collection of resources from the server. - Task Paginate(string path, Func, bool> getNextPage, CancellationToken token = default(CancellationToken)); + Task Paginate(string path, Func, bool> getNextPage, CancellationToken token = default); /// /// Fetches a collection of resources from the server one page at a time using the HTTP GET verb. @@ -150,7 +150,7 @@ public interface IOctopusAsyncClient : IDisposable /// /// /// The collection of resources from the server. - Task Paginate(string path, object pathParameters, Func, bool> getNextPage, CancellationToken token = default(CancellationToken)); + Task Paginate(string path, object pathParameters, Func, bool> getNextPage, CancellationToken token = default); /// /// Fetches a single resource from the server using the HTTP GET verb. @@ -169,7 +169,7 @@ public interface IOctopusAsyncClient : IDisposable /// If the path is a URI template, parameters to use for substitution. /// /// The resource from the server. - Task Get(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)); + Task Get(string path, object pathParameters = null, CancellationToken token = default); /// /// Creates a resource at the given URI on the server using the POST verb, then performs a fresh GET request to fetch @@ -190,7 +190,7 @@ public interface IOctopusAsyncClient : IDisposable /// If the path is a URI template, parameters to use for substitution. /// /// The latest copy of the resource from the server. - Task Create(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)); + Task Create(string path, TResource resource, object pathParameters = null, CancellationToken token = default); /// /// Sends a command to a resource at the given URI on the server using the POST verb. @@ -209,7 +209,7 @@ public interface IOctopusAsyncClient : IDisposable /// The resource to create. /// If the path is a URI template, parameters to use for substitution. /// - Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)); + Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default); /// /// Sends a command to a resource at the given URI on the server using the POST verb, and retrieve the response. @@ -228,7 +228,7 @@ public interface IOctopusAsyncClient : IDisposable /// The resource to create. /// If the path is a URI template, parameters to use for substitution. /// - Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)); + Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default); /// /// Sends a command to a resource at the given URI on the server using the POST verb. @@ -245,25 +245,7 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. /// - Task Post(string path, CancellationToken token = default(CancellationToken)); - - /// - /// Sends a command to a resource at the given URI on the server using the PUT verb. - /// - /// - /// HTTP 401 or 403: Thrown when the current user's API key was not valid, their - /// account is disabled, or they don't have permission to perform the specified action. - /// - /// - /// If any other error is successfully returned from the server (e.g., a 500 - /// server error). - /// - /// HTTP 400: If there was a problem with the request provided by the user. - /// HTTP 404: If the specified resource does not exist on the server. - /// The path to the container resource. - /// The resource to create. - /// - Task Put(string path, TResource resource, CancellationToken token = default(CancellationToken)); + Task Post(string path, CancellationToken token = default); /// /// Sends a command to a resource at the given URI on the server using the PUT verb. @@ -280,7 +262,7 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. /// - Task Put(string path, CancellationToken token = default(CancellationToken)); + Task Put(string path, CancellationToken token = default); /// /// Sends a command to a resource at the given URI on the server using the PUT verb. @@ -299,7 +281,7 @@ public interface IOctopusAsyncClient : IDisposable /// The resource to create. /// If the path is a URI template, parameters to use for substitution. /// - Task Put(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)); + Task Put(string path, TResource resource, object pathParameters = null, CancellationToken token = default); /// /// Updates the resource at the given URI on the server using the PUT verb, then performs a fresh GET request to reload @@ -320,7 +302,7 @@ public interface IOctopusAsyncClient : IDisposable /// If the path is a URI template, parameters to use for substitution. /// /// The latest copy of the resource from the server. - Task Update(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)); + Task Update(string path, TResource resource, object pathParameters = null, CancellationToken token = default); /// /// Deletes the resource at the given URI from the server using a the DELETE verb. Deletes in Octopus happen @@ -341,8 +323,9 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the resource to delete. /// If the path is a URI template, parameters to use for substitution. /// An optional resource to pass as the body of the request. + /// /// A task resource that provides details about the background task that deletes the specified resource. - Task Delete(string path, object pathParameters = null, object resource = null, CancellationToken token = default(CancellationToken)); + Task Delete(string path, object pathParameters = null, object resource = null, CancellationToken token = default); /// /// Fetches raw content from the resource at the specified path, using the GET verb. @@ -361,7 +344,7 @@ public interface IOctopusAsyncClient : IDisposable /// If the path is a URI template, parameters to use for substitution. /// /// A stream containing the content of the resource. - Task GetContent(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)); + Task GetContent(string path, object pathParameters = null, CancellationToken token = default); /// /// Creates or updates the raw content of the resource at the specified path, using the PUT verb. @@ -369,7 +352,7 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the resource to create or update. /// A stream containing content of the resource. /// - Task PutContent(string path, Stream contentStream, CancellationToken token = default(CancellationToken)); + Task PutContent(string path, Stream contentStream, CancellationToken token = default); Uri QualifyUri(string path, object parameters = null); @@ -379,14 +362,14 @@ public interface IOctopusAsyncClient : IDisposable /// /// /// - Task SignIn(LoginCommand loginCommand, CancellationToken token = default(CancellationToken)); + Task SignIn(LoginCommand loginCommand, CancellationToken token = default); /// /// Sign out /// /// /// - Task SignOut(CancellationToken token = default(CancellationToken)); + Task SignOut(CancellationToken token = default); /// /// Get a repository for the given space diff --git a/source/Octopus.Client/OctopusAsyncClient.cs b/source/Octopus.Client/OctopusAsyncClient.cs index 5898f0fd6..ac0d6cf81 100644 --- a/source/Octopus.Client/OctopusAsyncClient.cs +++ b/source/Octopus.Client/OctopusAsyncClient.cs @@ -169,7 +169,7 @@ private static async Task Create(OctopusServerEndpoint serv /// public bool IsUsingSecureConnection => serverEndpoint.IsUsingSecureConnection; - public async Task SignIn(LoginCommand loginCommand, CancellationToken token = default(CancellationToken)) + public async Task SignIn(LoginCommand loginCommand, CancellationToken token = default) { if (loginCommand.State == null) { @@ -185,7 +185,7 @@ private static async Task Create(OctopusServerEndpoint serv Repository = new OctopusAsyncRepository(this); } - public async Task SignOut(CancellationToken token = default(CancellationToken)) + public async Task SignOut(CancellationToken token = default) { await Post(await Repository.Link("SignOut").ConfigureAwait(false), token: token).ConfigureAwait(false); antiforgeryCookieName = null; @@ -230,7 +230,7 @@ private static async Task Create(OctopusServerEndpoint serv /// /// The resource from the server. /// - public async Task Get(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)) + public async Task Get(string path, object pathParameters = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); @@ -252,7 +252,7 @@ private static async Task Create(OctopusServerEndpoint serv /// /// The collection of resources from the server. /// - public async Task> List(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)) + public async Task> List(string path, object pathParameters = null, CancellationToken token = default) { return await Get>(path, pathParameters, token).ConfigureAwait(false); } @@ -268,7 +268,7 @@ private static async Task Create(OctopusServerEndpoint serv /// /// The collection of resources from the server. /// - public async Task> ListAll(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)) + public async Task> ListAll(string path, object pathParameters = null, CancellationToken token = default) { var resources = new List(); await Paginate(path, pathParameters, r => @@ -290,7 +290,7 @@ await Paginate(path, pathParameters, r => /// page will also be requested. /// /// - public async Task Paginate(string path, object pathParameters, Func, bool> getNextPage, CancellationToken token = default(CancellationToken)) + public async Task Paginate(string path, object pathParameters, Func, bool> getNextPage, CancellationToken token = default) { var page = await List(path, pathParameters, token).ConfigureAwait(false); @@ -310,7 +310,7 @@ await Paginate(path, pathParameters, r => /// page will also be requested. /// /// - public Task Paginate(string path, Func, bool> getNextPage, CancellationToken token = default(CancellationToken)) + public Task Paginate(string path, Func, bool> getNextPage, CancellationToken token = default) { return Paginate(path, null, getNextPage, token); } @@ -327,7 +327,7 @@ await Paginate(path, pathParameters, r => /// /// The latest copy of the resource from the server. /// - public async Task Create(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)) + public async Task Create(string path, TResource resource, object pathParameters = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); @@ -343,7 +343,7 @@ await Paginate(path, pathParameters, r => /// The resource to create. /// If the path is a URI template, parameters to use for substitution. /// - public Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)) + public Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); @@ -359,7 +359,7 @@ await Paginate(path, pathParameters, r => /// The resource to post. /// If the path is a URI template, parameters to use for substitution. /// - public async Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)) + public async Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); var response = await DispatchRequest(new OctopusRequest("POST", uri, requestResource: resource), true, token).ConfigureAwait(false); @@ -371,36 +371,13 @@ await Paginate(path, pathParameters, r => /// /// The path to the container resource. /// - public Task Post(string path, CancellationToken token = default(CancellationToken)) + public Task Post(string path, CancellationToken token = default) { var uri = QualifyUri(path); return DispatchRequest(new OctopusRequest("POST", uri), false, token); } - /// - /// Sends a command to a resource at the given URI on the server using the PUT verb. - /// - /// - /// HTTP 401 or 403: Thrown when the current user's API key was not valid, their - /// account is disabled, or they don't have permission to perform the specified action. - /// - /// - /// If any other error is successfully returned from the server (e.g., a 500 - /// server error). - /// - /// HTTP 400: If there was a problem with the request provided by the user. - /// HTTP 404: If the specified resource does not exist on the server. - /// The path to the container resource. - /// The resource to create. - /// - public Task Put(string path, TResource resource, CancellationToken token = default(CancellationToken)) - { - var uri = QualifyUri(path); - - return DispatchRequest(new OctopusRequest("PUT", uri, requestResource: resource), false, token); - } - /// /// Sends a command to a resource at the given URI on the server using the PUT verb. /// @@ -416,7 +393,7 @@ await Paginate(path, pathParameters, r => /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. /// - public Task Put(string path, CancellationToken token = default(CancellationToken)) + public Task Put(string path, CancellationToken token = default) { var uri = QualifyUri(path); @@ -431,7 +408,7 @@ await Paginate(path, pathParameters, r => /// The resource to create. /// If the path is a URI template, parameters to use for substitution. /// - public Task Put(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)) + public Task Put(string path, TResource resource, object pathParameters = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); @@ -445,7 +422,7 @@ await Paginate(path, pathParameters, r => /// If the path is a URI template, parameters to use for substitution. /// An optional resource to pass as the body of the request. /// - public Task Delete(string path, object pathParameters = null, object resource = null, CancellationToken token = default(CancellationToken)) + public Task Delete(string path, object pathParameters = null, object resource = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); @@ -464,7 +441,7 @@ await Paginate(path, pathParameters, r => /// /// The latest copy of the resource from the server. /// - public async Task Update(string path, TResource resource, object pathParameters = null, CancellationToken token = default(CancellationToken)) + public async Task Update(string path, TResource resource, object pathParameters = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); @@ -490,7 +467,7 @@ await Paginate(path, pathParameters, r => /// If the path is a URI template, parameters to use for substitution. /// /// A stream containing the content of the resource. - public async Task GetContent(string path, object pathParameters = null, CancellationToken token = default(CancellationToken)) + public async Task GetContent(string path, object pathParameters = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); var response = await DispatchRequest(new OctopusRequest("GET", uri), true, token).ConfigureAwait(false); @@ -503,7 +480,7 @@ await Paginate(path, pathParameters, r => /// The path to the resource to create or update. /// A stream containing content of the resource. /// - public Task PutContent(string path, Stream contentStream, CancellationToken token = default(CancellationToken)) + public Task PutContent(string path, Stream contentStream, CancellationToken token = default) { if (contentStream == null) throw new ArgumentNullException("contentStream"); var uri = QualifyUri(path); From cadd7817b300111de00957e4926aa3c98c987fba Mon Sep 17 00:00:00 2001 From: yj7o5 Date: Wed, 7 Oct 2020 21:00:32 -0500 Subject: [PATCH 03/10] Add CancellationToken optional parameter to async methods --- .../Editors/Async/AccountEditor.cs | 17 ++- .../AzureServicePrincipalAccountEditor.cs | 17 ++- .../Async/AzureSubscriptionAccountEditor.cs | 21 +-- .../Editors/Async/CertificateEditor.cs | 17 ++- .../Editors/Async/ChannelEditor.cs | 21 +-- .../Editors/Async/DeploymentProcessEditor.cs | 9 +- .../Editors/Async/EnvironmentEditor.cs | 27 ++-- .../Editors/Async/IResourceEditor.cs | 3 +- .../Editors/Async/LibraryVariableSetEditor.cs | 21 +-- .../Editors/Async/LifecycleEditor.cs | 19 +-- .../Editors/Async/MachineEditor.cs | 23 +-- .../Editors/Async/ProjectChannelsEditor.cs | 19 +-- .../Editors/Async/ProjectEditor.cs | 33 ++-- .../Editors/Async/ProjectGroupEditor.cs | 17 ++- .../Editors/Async/ProjectTriggerEditor.cs | 13 +- .../Editors/Async/ProjectTriggersEditor.cs | 15 +- .../Editors/Async/RunbookEditor.cs | 19 +-- .../Editors/Async/RunbookProcessEditor.cs | 5 +- .../Editors/Async/SubscriptionEditor.cs | 13 +- .../Editors/Async/TagSetEditor.cs | 21 +-- .../Editors/Async/TenantEditor.cs | 27 ++-- .../Editors/Async/TenantVariablesEditor.cs | 9 +- .../Editors/Async/VariableSetEditor.cs | 9 +- .../Editors/Async/WorkerEditor.cs | 14 +- .../Editors/Async/WorkerPoolEditor.cs | 21 +-- .../Operations/RegisterMachineOperation.cs | 2 +- .../Repositories/Async/AccountRepository.cs | 61 ++++---- .../Async/ActionTemplateRepository.cs | 29 ++-- .../Repositories/Async/ArtifactRepository.cs | 19 +-- .../Repositories/Async/BackupRepository.cs | 13 +- .../Repositories/Async/BasicRepository.cs | 56 +++---- .../Async/BuildInformationRepository.cs | 43 +++--- .../BuiltInPackageRepositoryRepository.cs | 74 ++++----- .../CertificateConfigurationRepository.cs | 13 +- .../Async/CertificateRepository.cs | 40 ++--- .../Repositories/Async/ChannelRepository.cs | 37 ++--- .../CommunityActionTemplateRepository.cs | 25 ++-- .../Async/ConfigurationRepository.cs | 23 +-- .../Async/DashboardConfigurationRepository.cs | 13 +- .../Repositories/Async/DashboardRepository.cs | 14 +- .../Repositories/Async/DefectsRepository.cs | 19 +-- .../Async/DeploymentProcessRepository.cs | 25 ++-- .../Async/DeploymentRepository.cs | 32 ++-- .../Async/EnvironmentRepository.cs | 41 ++--- .../Repositories/Async/EventRepository.cs | 42 +++--- .../Async/FeaturesConfigurationRepository.cs | 13 +- .../Repositories/Async/FeedRepository.cs | 7 +- .../Repositories/Async/ICreate.cs | 3 +- .../Repositories/Async/IDelete.cs | 3 +- .../Repositories/Async/IFindByName.cs | 5 +- .../Octopus.Client/Repositories/Async/IGet.cs | 7 +- .../Repositories/Async/IGetAll.cs | 3 +- .../Repositories/Async/IModify.cs | 3 +- .../Repositories/Async/IPaginate.cs | 9 +- .../Async/InterruptionRepository.cs | 26 ++-- .../Async/LibraryVariableSetRepository.cs | 13 +- .../Repositories/Async/LicensesRepository.cs | 19 +-- .../Async/LifecyclesRepository.cs | 13 +- .../Async/MachinePolicyRepository.cs | 13 +- .../Repositories/Async/MachineRepository.cs | 61 ++++---- .../Async/MachineRoleRepository.cs | 7 +- .../Repositories/Async/MigrationRepository.cs | 15 +- .../Async/OctopusServerNodeRepository.cs | 13 +- .../Async/PackageMetadataRepository.cs | 19 +-- .../PerformanceConfigurationRepository.cs | 15 +- .../Async/ProjectGroupRepository.cs | 19 +-- .../Repositories/Async/ProjectRepository.cs | 109 +++++++------- .../Async/ProjectTriggerRepository.cs | 19 +-- .../Repositories/Async/ReleaseRepository.cs | 47 +++--- .../Async/RetentionPolicyRepository.cs | 7 +- .../Async/RunbookProcessRepository.cs | 9 +- .../Repositories/Async/RunbookRepository.cs | 43 +++--- .../Async/RunbookRunRepository.cs | 26 ++-- .../Async/RunbookSnapshotRepository.cs | 41 ++--- .../Repositories/Async/SchedulerRepository.cs | 49 +++--- .../Async/ServerStatusRepository.cs | 19 +-- .../Repositories/Async/SpaceRepository.cs | 7 +- .../Async/SubscriptionRepository.cs | 9 +- .../Repositories/Async/TagSetRepository.cs | 19 +-- .../Repositories/Async/TaskRepository.cs | 141 +++++++++--------- .../Repositories/Async/TeamsRepository.cs | 7 +- .../Repositories/Async/TenantRepository.cs | 56 +++---- .../Async/TenantVariablesRepository.cs | 7 +- .../Async/UpgradeConfigurationRepository.cs | 7 +- .../Async/UserPermissionsRepository.cs | 19 +-- .../Repositories/Async/UserRepository.cs | 83 ++++++----- .../Repositories/Async/UserRolesRepository.cs | 9 +- .../Repositories/Async/UserTeamsRepository.cs | 7 +- .../Async/VariableSetRepository.cs | 15 +- .../Async/VcsRunbookRepository.cs | 35 ++--- .../Async/WorkerPoolRepository.cs | 35 +++-- .../Repositories/Async/WorkerRepository.cs | 35 +++-- 92 files changed, 1167 insertions(+), 1030 deletions(-) diff --git a/source/Octopus.Client/Editors/Async/AccountEditor.cs b/source/Octopus.Client/Editors/Async/AccountEditor.cs index 875b78d76..e334820a2 100644 --- a/source/Octopus.Client/Editors/Async/AccountEditor.cs +++ b/source/Octopus.Client/Editors/Async/AccountEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model.Accounts; using Octopus.Client.Model.Accounts.Usages; @@ -19,7 +20,7 @@ public AccountEditor(IAccountRepository repository) public TAccountResource Instance { get; private set; } - public async Task CreateOrModify(string name) + public async Task CreateOrModify(string name, CancellationToken token = default) { var existing = await Repository.FindByName(name).ConfigureAwait(false); if (existing == null) @@ -27,7 +28,7 @@ public async Task CreateOrModify(string name) Instance = (TAccountResource)await Repository.Create(new TAccountResource { Name = name - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { @@ -42,9 +43,9 @@ public async Task CreateOrModify(string name) return (TAccountEditor)this; } - public async Task FindByName(string name) + public async Task FindByName(string name, CancellationToken token = default) { - var existing = await Repository.FindByName(name).ConfigureAwait(false); + var existing = await Repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { throw new ArgumentException($"An account with the name {name} could not be found"); @@ -68,15 +69,15 @@ public virtual TAccountEditor Customize(Action customize) return (TAccountEditor)this; } - public virtual async Task Save() + public virtual async Task Save(CancellationToken token = default) { - Instance = (TAccountResource)await Repository.Modify(Instance).ConfigureAwait(false); + Instance = (TAccountResource)await Repository.Modify(Instance, token).ConfigureAwait(false); return (TAccountEditor)this; } - public Task Usages() + public Task Usages(CancellationToken token = default) { - return Repository.Client.Get(Instance.Link("Usages")); + return Repository.Client.Get(Instance.Link("Usages"), token: token); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Editors/Async/AzureServicePrincipalAccountEditor.cs b/source/Octopus.Client/Editors/Async/AzureServicePrincipalAccountEditor.cs index 3404a3b0b..2ca22d8fa 100644 --- a/source/Octopus.Client/Editors/Async/AzureServicePrincipalAccountEditor.cs +++ b/source/Octopus.Client/Editors/Async/AzureServicePrincipalAccountEditor.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model.Accounts; using Octopus.Client.Repositories.Async; @@ -12,25 +13,25 @@ public AzureServicePrincipalAccountEditor(IAccountRepository repository) : base( { } - public Task> ResourceGroups() + public Task> ResourceGroups(CancellationToken token = default) { - return Repository.Client.Get>(Instance.Link("ResourceGroups")); + return Repository.Client.Get>(Instance.Link("ResourceGroups"), token: token); } - public Task> WebSites() + public Task> WebSites(CancellationToken token = default) { - return Repository.Client.Get>(Instance.Link("WebSites")); + return Repository.Client.Get>(Instance.Link("WebSites"), token: token); } - public Task> WebSlots(AzureServicePrincipalAccountResource.WebSite site) + public Task> WebSlots(AzureServicePrincipalAccountResource.WebSite site, CancellationToken token = default) { return Repository.Client.Get>(Instance.Link("WebSlots"), - new {id = Instance.Id, resourceGroupName = site.ResourceGroup, webSiteName = site.WebSpace}); + new {id = Instance.Id, resourceGroupName = site.ResourceGroup, webSiteName = site.WebSpace}, token); } - public Task> StorageAccounts() + public Task> StorageAccounts(CancellationToken token = default) { - return Repository.Client.Get>(Instance.Link("StorageAccounts")); + return Repository.Client.Get>(Instance.Link("StorageAccounts"), token: token); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Editors/Async/AzureSubscriptionAccountEditor.cs b/source/Octopus.Client/Editors/Async/AzureSubscriptionAccountEditor.cs index ab9ebcf6c..ad93698da 100644 --- a/source/Octopus.Client/Editors/Async/AzureSubscriptionAccountEditor.cs +++ b/source/Octopus.Client/Editors/Async/AzureSubscriptionAccountEditor.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model.Accounts; using Octopus.Client.Repositories.Async; @@ -11,32 +12,32 @@ public AzureSubscriptionAccountEditor(IAccountRepository repository) : base(repo { } - public Task> StorageAccounts(AzureSubscriptionAccountResource account) + public Task> StorageAccounts(AzureSubscriptionAccountResource account, CancellationToken token = default) { - return Repository.Client.Get>(account.Link("StorageAccounts")); + return Repository.Client.Get>(account.Link("StorageAccounts"), token: token); } - public Task> WebSites(AzureSubscriptionAccountResource account) + public Task> WebSites(AzureSubscriptionAccountResource account, CancellationToken token = default) { - return Repository.Client.Get>(account.Link("WebSites")); + return Repository.Client.Get>(account.Link("WebSites"), token: token); } - public Task> WebSites() + public Task> WebSites(CancellationToken token = default) { - return Repository.Client.Get>(Instance.Link("WebSites")); + return Repository.Client.Get>(Instance.Link("WebSites"), token: token); } public Task> WebSlots(AzureSubscriptionAccountResource account, - AzureSubscriptionAccountResource.WebSite site) + AzureSubscriptionAccountResource.WebSite site, CancellationToken token = default) { return Repository.Client.Get>(account.Link("WebSlots"), - new { resourceGroupName = site.ResourceGroup, webSiteName = site.WebSpace}); + new { resourceGroupName = site.ResourceGroup, webSiteName = site.WebSpace}, token); } - public Task> WebSlots(AzureSubscriptionAccountResource.WebSite site) + public Task> WebSlots(AzureSubscriptionAccountResource.WebSite site, CancellationToken token = default) { return Repository.Client.Get>(Instance.Link("WebSlots"), - new { resourceGroupName = site.ResourceGroup, webSiteName = site.WebSpace }); + new { resourceGroupName = site.ResourceGroup, webSiteName = site.WebSpace }, token: token); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Editors/Async/CertificateEditor.cs b/source/Octopus.Client/Editors/Async/CertificateEditor.cs index cd6b66a88..399da880e 100644 --- a/source/Octopus.Client/Editors/Async/CertificateEditor.cs +++ b/source/Octopus.Client/Editors/Async/CertificateEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -16,9 +17,9 @@ public CertificateEditor(ICertificateRepository repository) public CertificateResource Instance { get; private set; } - public async Task Create(string name, string certificateData) + public async Task Create(string name, string certificateData, CancellationToken token = default) { - var existing = repository.FindByName(name); + var existing = repository.FindByName(name, token: token); if (existing != null) { throw new ArgumentException($"A certificate with the name {name} already exists"); @@ -29,9 +30,9 @@ public async Task Create(string name, string certificateData) return this; } - public async Task FindByName(string name) + public async Task FindByName(string name, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { throw new ArgumentException($"A certificate with the name {name} could not be found"); @@ -50,15 +51,15 @@ public CertificateEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } - public async Task Usages() + public async Task Usages(CancellationToken token = default) { - return await repository.Client.Get(Instance.Link("Usages")).ConfigureAwait(false); + return await repository.Client.Get(Instance.Link("Usages"), token: token).ConfigureAwait(false); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Editors/Async/ChannelEditor.cs b/source/Octopus.Client/Editors/Async/ChannelEditor.cs index 109ca9241..b748f17f1 100644 --- a/source/Octopus.Client/Editors/Async/ChannelEditor.cs +++ b/source/Octopus.Client/Editors/Async/ChannelEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -16,9 +17,9 @@ public ChannelEditor(IChannelRepository repository) public ChannelResource Instance { get; private set; } - public async Task CreateOrModify(ProjectResource project, string name) + public async Task CreateOrModify(ProjectResource project, string name, CancellationToken token = default) { - var existing = await repository.FindByName(project, name).ConfigureAwait(false); + var existing = await repository.FindByName(project, name, token).ConfigureAwait(false); if (existing == null) { @@ -26,21 +27,21 @@ public async Task CreateOrModify(ProjectResource project, string { ProjectId = project.Id, Name = name - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task CreateOrModify(ProjectResource project, string name, string description) + public async Task CreateOrModify(ProjectResource project, string name, string description, CancellationToken token = default) { - var existing = await repository.FindByName(project, name).ConfigureAwait(false); + var existing = await repository.FindByName(project, name, token).ConfigureAwait(false); if (existing == null) { @@ -49,14 +50,14 @@ public async Task CreateOrModify(ProjectResource project, string ProjectId = project.Id, Name = name, Description = description - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; existing.Description = description; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -116,9 +117,9 @@ public ChannelEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/DeploymentProcessEditor.cs b/source/Octopus.Client/Editors/Async/DeploymentProcessEditor.cs index 873b52fd6..5d5d9a81e 100644 --- a/source/Octopus.Client/Editors/Async/DeploymentProcessEditor.cs +++ b/source/Octopus.Client/Editors/Async/DeploymentProcessEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -16,9 +17,9 @@ public DeploymentProcessEditor(IDeploymentProcessRepository repository) public DeploymentProcessResource Instance { get; private set; } - public async Task Load(string id) + public async Task Load(string id, CancellationToken token = default) { - Instance = await repository.Get(id).ConfigureAwait(false); + Instance = await repository.Get(id, token).ConfigureAwait(false); return this; } @@ -50,9 +51,9 @@ public DeploymentProcessEditor Customize(Action custo return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/EnvironmentEditor.cs b/source/Octopus.Client/Editors/Async/EnvironmentEditor.cs index 147d86e01..56a767076 100644 --- a/source/Octopus.Client/Editors/Async/EnvironmentEditor.cs +++ b/source/Octopus.Client/Editors/Async/EnvironmentEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -16,29 +17,29 @@ public EnvironmentEditor(IEnvironmentRepository repository) public EnvironmentResource Instance { get; private set; } - public async Task CreateOrModify(string name) + public async Task CreateOrModify(string name, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new EnvironmentResource { Name = name, - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task CreateOrModify(string name, string description, bool allowDynamicInfrastructure = false) + public async Task CreateOrModify(string name, string description, bool allowDynamicInfrastructure = false, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new EnvironmentResource @@ -46,7 +47,7 @@ public async Task CreateOrModify(string name, string descript Name = name, Description = description, AllowDynamicInfrastructure = allowDynamicInfrastructure - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { @@ -54,13 +55,13 @@ public async Task CreateOrModify(string name, string descript existing.Description = description; existing.AllowDynamicInfrastructure = allowDynamicInfrastructure; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task CreateOrModify(string name, string description) + public async Task CreateOrModify(string name, string description, CancellationToken token = default) { var existing = await repository.FindByName(name).ConfigureAwait(false); if (existing == null) @@ -69,14 +70,14 @@ public async Task CreateOrModify(string name, string descript { Name = name, Description = description, - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; existing.Description = description; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -88,9 +89,9 @@ public EnvironmentEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/IResourceEditor.cs b/source/Octopus.Client/Editors/Async/IResourceEditor.cs index 2fb2a1480..9b72782dc 100644 --- a/source/Octopus.Client/Editors/Async/IResourceEditor.cs +++ b/source/Octopus.Client/Editors/Async/IResourceEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -10,7 +11,7 @@ public interface IResourceEditor : IResourceBui { TResource Instance { get; } TResourceBuilder Customize(Action customize); - Task Save(); + Task Save(CancellationToken token = default); } public interface IResourceBuilder diff --git a/source/Octopus.Client/Editors/Async/LibraryVariableSetEditor.cs b/source/Octopus.Client/Editors/Async/LibraryVariableSetEditor.cs index 9e94e27e7..92703f747 100644 --- a/source/Octopus.Client/Editors/Async/LibraryVariableSetEditor.cs +++ b/source/Octopus.Client/Editors/Async/LibraryVariableSetEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -22,30 +23,30 @@ public LibraryVariableSetEditor(ILibraryVariableSetRepository repository, IVaria public IVariableTemplateContainerEditor VariableTemplates => Instance; - public async Task CreateOrModify(string name) + public async Task CreateOrModify(string name, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new LibraryVariableSetResource { Name = name, - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task CreateOrModify(string name, string description) + public async Task CreateOrModify(string name, string description, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { @@ -53,14 +54,14 @@ public async Task CreateOrModify(string name, string d { Name = name, Description = description - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; existing.Description = description; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -72,9 +73,9 @@ public LibraryVariableSetEditor Customize(Action cus return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); if (variables.IsValueCreated) { var vars = await variables.Value.ConfigureAwait(false); diff --git a/source/Octopus.Client/Editors/Async/LifecycleEditor.cs b/source/Octopus.Client/Editors/Async/LifecycleEditor.cs index 380a3a30c..1284ea07f 100644 --- a/source/Octopus.Client/Editors/Async/LifecycleEditor.cs +++ b/source/Octopus.Client/Editors/Async/LifecycleEditor.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -17,7 +18,7 @@ public LifecycleEditor(ILifecyclesRepository repository) public LifecycleResource Instance { get; private set; } - public async Task CreateOrModify(string name) + public async Task CreateOrModify(string name, CancellationToken token = default) { var existing = await repository.FindByName(name).ConfigureAwait(false); if (existing == null) @@ -25,35 +26,35 @@ public async Task CreateOrModify(string name) Instance = await repository.Create(new LifecycleResource { Name = name, - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task CreateOrModify(string name, string description) + public async Task CreateOrModify(string name, string description, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new LifecycleResource { Name = name, Description = description - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; existing.Description = description; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token: token).ConfigureAwait(false); } return this; @@ -88,9 +89,9 @@ public LifecycleEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/MachineEditor.cs b/source/Octopus.Client/Editors/Async/MachineEditor.cs index afb48ad9d..80a949f4d 100644 --- a/source/Octopus.Client/Editors/Async/MachineEditor.cs +++ b/source/Octopus.Client/Editors/Async/MachineEditor.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Model.Endpoints; @@ -22,9 +23,10 @@ public async Task CreateOrModify( string name, EndpointResource endpoint, EnvironmentResource[] environments, - string[] roles) + string[] roles, + CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new MachineResource @@ -33,7 +35,7 @@ public async Task CreateOrModify( Endpoint = endpoint, EnvironmentIds = new ReferenceCollection(environments.Select(e => e.Id)), Roles = new ReferenceCollection(roles) - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { @@ -42,7 +44,7 @@ public async Task CreateOrModify( existing.EnvironmentIds.ReplaceAll(environments.Select(e => e.Id)); existing.Roles.ReplaceAll(roles); - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -55,9 +57,10 @@ public async Task CreateOrModify( string[] roles, TenantResource[] tenants, TagResource[] tenantTags, - TenantedDeploymentMode? tenantedDeploymentParticipation = null) + TenantedDeploymentMode? tenantedDeploymentParticipation = null, + CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { @@ -76,7 +79,7 @@ public async Task CreateOrModify( resource.TenantedDeploymentParticipation = tenantedDeploymentParticipation.Value; } - Instance = await repository.Create(resource).ConfigureAwait(false); + Instance = await repository.Create(resource, token: token).ConfigureAwait(false); } else { @@ -92,7 +95,7 @@ public async Task CreateOrModify( existing.TenantedDeploymentParticipation = tenantedDeploymentParticipation.Value; } - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -134,9 +137,9 @@ public MachineEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/ProjectChannelsEditor.cs b/source/Octopus.Client/Editors/Async/ProjectChannelsEditor.cs index 234bb2846..edc0fd1f2 100644 --- a/source/Octopus.Client/Editors/Async/ProjectChannelsEditor.cs +++ b/source/Octopus.Client/Editors/Async/ProjectChannelsEditor.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; +using System.Threading; namespace Octopus.Client.Editors.Async { @@ -19,32 +20,32 @@ public ProjectChannelsEditor(IChannelRepository repository, ProjectResource owne this.owner = owner; } - public async Task CreateOrModify(string name) + public async Task CreateOrModify(string name, CancellationToken token = default) { - var channelBuilder = await new ChannelEditor(repository).CreateOrModify(owner, name).ConfigureAwait(false); + var channelBuilder = await new ChannelEditor(repository).CreateOrModify(owner, name, token).ConfigureAwait(false); trackedChannelBuilders.Add(channelBuilder); return channelBuilder; } - public async Task CreateOrModify(string name, string description) + public async Task CreateOrModify(string name, string description, CancellationToken token = default) { - var channelBuilder = await new ChannelEditor(repository).CreateOrModify(owner, name, description).ConfigureAwait(false); + var channelBuilder = await new ChannelEditor(repository).CreateOrModify(owner, name, description, token).ConfigureAwait(false); trackedChannelBuilders.Add(channelBuilder); return channelBuilder; } - public async Task Delete(string name) + public async Task Delete(string name, CancellationToken token = default) { - var channel = await repository.FindByName(owner, name).ConfigureAwait(false); + var channel = await repository.FindByName(owner, name, token).ConfigureAwait(false); if (channel != null) - await repository.Delete(channel).ConfigureAwait(false); + await repository.Delete(channel, token).ConfigureAwait(false); return this; } - public async Task SaveAll() + public async Task SaveAll(CancellationToken token = default) { await Task.WhenAll( - trackedChannelBuilders.Select(x => x.Save()) + trackedChannelBuilders.Select(x => x.Save(token)) ).ConfigureAwait(false); return this; } diff --git a/source/Octopus.Client/Editors/Async/ProjectEditor.cs b/source/Octopus.Client/Editors/Async/ProjectEditor.cs index ef4cc0421..fdfd95213 100644 --- a/source/Octopus.Client/Editors/Async/ProjectEditor.cs +++ b/source/Octopus.Client/Editors/Async/ProjectEditor.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -40,9 +41,9 @@ public ProjectEditor( public IVariableTemplateContainerEditor VariableTemplates => Instance; - public async Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle) + public async Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { @@ -51,7 +52,7 @@ public async Task CreateOrModify(string name, ProjectGroupResourc Name = name, ProjectGroupId = projectGroup.Id, LifecycleId = lifecycle.Id, - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { @@ -59,15 +60,15 @@ public async Task CreateOrModify(string name, ProjectGroupResourc existing.ProjectGroupId = projectGroup.Id; existing.LifecycleId = lifecycle.Id; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle, string description, string cloneId = null) + public async Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle, string description, string cloneId = null, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { @@ -77,7 +78,7 @@ public async Task CreateOrModify(string name, ProjectGroupResourc ProjectGroupId = projectGroup.Id, LifecycleId = lifecycle.Id, Description = description - }, new { clone = cloneId }).ConfigureAwait(false); + }, new { clone = cloneId }, token).ConfigureAwait(false); } else { @@ -86,17 +87,17 @@ public async Task CreateOrModify(string name, ProjectGroupResourc existing.LifecycleId = lifecycle.Id; existing.Description = description; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task SetLogo(string logoFilePath) + public async Task SetLogo(string logoFilePath, CancellationToken token = default) { using (var stream = new FileStream(logoFilePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { - await repository.SetLogo(Instance, Path.GetFileName(logoFilePath), stream).ConfigureAwait(false); + await repository.SetLogo(Instance, Path.GetFileName(logoFilePath), stream, token).ConfigureAwait(false); } return this; @@ -114,26 +115,26 @@ public ProjectEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); if (channels.IsValueCreated) { - await channels.Value.SaveAll().ConfigureAwait(false); + await channels.Value.SaveAll(token).ConfigureAwait(false); } if (deploymentProcess.IsValueCreated) { var depProcess = await deploymentProcess.Value.ConfigureAwait(false); - await depProcess.Save().ConfigureAwait(false); + await depProcess.Save(token).ConfigureAwait(false); } if (triggers.IsValueCreated) { - await triggers.Value.SaveAll().ConfigureAwait(false); + await triggers.Value.SaveAll(token).ConfigureAwait(false); } if (variables.IsValueCreated) { var vars = await variables.Value.ConfigureAwait(false); - await vars.Save().ConfigureAwait(false); + await vars.Save(token).ConfigureAwait(false); } return this; } diff --git a/source/Octopus.Client/Editors/Async/ProjectGroupEditor.cs b/source/Octopus.Client/Editors/Async/ProjectGroupEditor.cs index 5ae390732..76f6aab05 100644 --- a/source/Octopus.Client/Editors/Async/ProjectGroupEditor.cs +++ b/source/Octopus.Client/Editors/Async/ProjectGroupEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -16,7 +17,7 @@ public ProjectGroupEditor(IProjectGroupRepository repository) public ProjectGroupResource Instance { get; private set; } - public async Task CreateOrModify(string name) + public async Task CreateOrModify(string name, CancellationToken token) { var existing = await repository.FindByName(name).ConfigureAwait(false); if (existing == null) @@ -24,18 +25,18 @@ public async Task CreateOrModify(string name) Instance = await repository.Create(new ProjectGroupResource { Name = name, - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task CreateOrModify(string name, string description) + public async Task CreateOrModify(string name, string description, CancellationToken token = default) { var existing = await repository.FindByName(name).ConfigureAwait(false); if (existing == null) @@ -44,14 +45,14 @@ public async Task CreateOrModify(string name, string descrip { Name = name, Description = description - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; existing.Description = description; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -63,9 +64,9 @@ public ProjectGroupEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/ProjectTriggerEditor.cs b/source/Octopus.Client/Editors/Async/ProjectTriggerEditor.cs index 278ba2f55..4a1afac83 100644 --- a/source/Octopus.Client/Editors/Async/ProjectTriggerEditor.cs +++ b/source/Octopus.Client/Editors/Async/ProjectTriggerEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Model.Triggers; @@ -17,9 +18,9 @@ public ProjectTriggerEditor(IProjectTriggerRepository repository) public ProjectTriggerResource Instance { get; private set; } - public async Task CreateOrModify(ProjectResource project, string name, TriggerFilterResource filter, TriggerActionResource action) + public async Task CreateOrModify(ProjectResource project, string name, TriggerFilterResource filter, TriggerActionResource action, CancellationToken token = default) { - var existing = await repository.FindByName(project, name).ConfigureAwait(false); + var existing = await repository.FindByName(project, name, token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new ProjectTriggerResource @@ -28,14 +29,14 @@ public async Task CreateOrModify(ProjectResource project, ProjectId = project.Id, Filter = filter, Action = action - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; existing.Filter = filter; existing.Action = action; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -47,9 +48,9 @@ public ProjectTriggerEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/ProjectTriggersEditor.cs b/source/Octopus.Client/Editors/Async/ProjectTriggersEditor.cs index b9581bc8f..70267b4c3 100644 --- a/source/Octopus.Client/Editors/Async/ProjectTriggersEditor.cs +++ b/source/Octopus.Client/Editors/Async/ProjectTriggersEditor.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Model.Triggers; @@ -20,24 +21,24 @@ public ProjectTriggersEditor(IProjectTriggerRepository repository, ProjectResour this.owner = owner; } - public async Task CreateOrModify(string name, TriggerFilterResource filter, TriggerActionResource action) + public async Task CreateOrModify(string name, TriggerFilterResource filter, TriggerActionResource action, CancellationToken token = default) { - var projectTriggerBuilder = await new ProjectTriggerEditor(repository).CreateOrModify(owner, name, filter, action).ConfigureAwait(false); + var projectTriggerBuilder = await new ProjectTriggerEditor(repository).CreateOrModify(owner, name, filter, action, token).ConfigureAwait(false); trackedProjectTriggerBuilders.Add(projectTriggerBuilder); return projectTriggerBuilder; } - public async Task Delete(string name) + public async Task Delete(string name, CancellationToken token = default) { - var trigger = await repository.FindByName(owner, name).ConfigureAwait(false); + var trigger = await repository.FindByName(owner, name, token).ConfigureAwait(false); if (trigger != null) - await repository.Delete(trigger).ConfigureAwait(false); + await repository.Delete(trigger, token).ConfigureAwait(false); return this; } - public async Task SaveAll() + public async Task SaveAll(CancellationToken token = default) { - await Task.WhenAll(trackedProjectTriggerBuilders.Select(x => x.Save())).ConfigureAwait(false); + await Task.WhenAll(trackedProjectTriggerBuilders.Select(x => x.Save(token))).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/RunbookEditor.cs b/source/Octopus.Client/Editors/Async/RunbookEditor.cs index cfa01ea97..898b76188 100644 --- a/source/Octopus.Client/Editors/Async/RunbookEditor.cs +++ b/source/Octopus.Client/Editors/Async/RunbookEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -21,9 +22,9 @@ public RunbookEditor(IRunbookRepository repository, public Task RunbookProcess => runbookProcess.Value; - public async Task CreateOrModify(ProjectResource project, string name, string description) + public async Task CreateOrModify(ProjectResource project, string name, string description, CancellationToken token = default) { - var existing = await repository.FindByName(project, name).ConfigureAwait(false); + var existing = await repository.FindByName(project, name, token).ConfigureAwait(false); if (existing == null) { @@ -32,22 +33,22 @@ public async Task CreateOrModify(ProjectResource project, string ProjectId = project.Id, Name = name, Description = description - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; existing.Description = description; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task Load(string id) + public async Task Load(string id, CancellationToken token = default) { - Instance = await repository.Get(id).ConfigureAwait(false); + Instance = await repository.Get(id, token).ConfigureAwait(false); return this; } @@ -57,13 +58,13 @@ public RunbookEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); if (runbookProcess.IsValueCreated) { var steps = await runbookProcess.Value.ConfigureAwait(false); - await steps.Save().ConfigureAwait(false); + await steps.Save(token).ConfigureAwait(false); } return this; } diff --git a/source/Octopus.Client/Editors/Async/RunbookProcessEditor.cs b/source/Octopus.Client/Editors/Async/RunbookProcessEditor.cs index 6fe70dc5f..d0afc2051 100644 --- a/source/Octopus.Client/Editors/Async/RunbookProcessEditor.cs +++ b/source/Octopus.Client/Editors/Async/RunbookProcessEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -50,9 +51,9 @@ public RunbookProcessEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/SubscriptionEditor.cs b/source/Octopus.Client/Editors/Async/SubscriptionEditor.cs index 7383082c1..6a68cbd5c 100644 --- a/source/Octopus.Client/Editors/Async/SubscriptionEditor.cs +++ b/source/Octopus.Client/Editors/Async/SubscriptionEditor.cs @@ -1,6 +1,7 @@ using Octopus.Client.Model; using Octopus.Client.Repositories.Async; using System; +using System.Threading; using System.Threading.Tasks; namespace Octopus.Client.Editors.Async @@ -17,9 +18,9 @@ public SubscriptionEditor( public SubscriptionResource Instance { get; private set; } - public async Task CreateOrModify(string name, EventNotificationSubscription eventNotificationSubscription, bool isDisabled) + public async Task CreateOrModify(string name, EventNotificationSubscription eventNotificationSubscription, bool isDisabled, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { @@ -29,7 +30,7 @@ public async Task CreateOrModify(string name, EventNotificat Type = SubscriptionType.Event, IsDisabled = isDisabled, EventNotificationSubscription = eventNotificationSubscription, - }) + }, token: token) .ConfigureAwait(false); } else @@ -38,7 +39,7 @@ public async Task CreateOrModify(string name, EventNotificat existing.IsDisabled = isDisabled; existing.EventNotificationSubscription = eventNotificationSubscription; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -50,9 +51,9 @@ public SubscriptionEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/TagSetEditor.cs b/source/Octopus.Client/Editors/Async/TagSetEditor.cs index 262ecb08d..a9f832bf2 100644 --- a/source/Octopus.Client/Editors/Async/TagSetEditor.cs +++ b/source/Octopus.Client/Editors/Async/TagSetEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -16,39 +17,39 @@ public TagSetEditor(ITagSetRepository repository) public TagSetResource Instance { get; private set; } - public async Task CreateOrModify(string name) + public async Task CreateOrModify(string name, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new TagSetResource { Name = name, - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task CreateOrModify(string name, string description) + public async Task CreateOrModify(string name, string description, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new TagSetResource { Name = name, - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Description = description; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -81,9 +82,9 @@ public TagSetEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/TenantEditor.cs b/source/Octopus.Client/Editors/Async/TenantEditor.cs index 32d82f7d6..9619420a5 100644 --- a/source/Octopus.Client/Editors/Async/TenantEditor.cs +++ b/source/Octopus.Client/Editors/Async/TenantEditor.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Exceptions; using Octopus.Client.Model; @@ -22,26 +23,26 @@ public TenantEditor(ITenantRepository repository) public Task Variables => variables.Value; - public async Task CreateOrModify(string name) + public async Task CreateOrModify(string name, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new TenantResource { Name = name, - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task CreateOrModify(string name, string description, string cloneId = null) + public async Task CreateOrModify(string name, string description, string cloneId = null, CancellationToken token = default) { var baseRepository = ((TenantRepository) repository).Repository; if (!await baseRepository.HasLinkParameter("Tenants", "clone")) @@ -49,31 +50,31 @@ public async Task CreateOrModify(string name, string description, ? "Tenant Descriptions requires Octopus version 2019.8.0 or newer." : "Cloning Tenants requires Octopus version 2019.8.0 or newer.", "2019.8.0"); - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new TenantResource { Name = name, Description = description, - }, new { clone = cloneId } + }, new { clone = cloneId }, token ).ConfigureAwait(false); } else { existing.Name = name; existing.Description = description; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task SetLogo(string logoFilePath) + public async Task SetLogo(string logoFilePath, CancellationToken token = default) { using (var stream = new FileStream(logoFilePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { - await repository.SetLogo(Instance, Path.GetFileName(logoFilePath), stream).ConfigureAwait(false); + await repository.SetLogo(Instance, Path.GetFileName(logoFilePath), stream, token).ConfigureAwait(false); } return this; @@ -109,13 +110,13 @@ public TenantEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); if (variables.IsValueCreated) { var vars = await variables.Value.ConfigureAwait(false); - await vars.Save().ConfigureAwait(false); + await vars.Save(token).ConfigureAwait(false); } return this; } diff --git a/source/Octopus.Client/Editors/Async/TenantVariablesEditor.cs b/source/Octopus.Client/Editors/Async/TenantVariablesEditor.cs index e33594ef3..9ac3cefbe 100644 --- a/source/Octopus.Client/Editors/Async/TenantVariablesEditor.cs +++ b/source/Octopus.Client/Editors/Async/TenantVariablesEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -18,9 +19,9 @@ public TenantVariablesEditor(ITenantRepository repository, TenantResource tenant public TenantVariableResource Instance { get; private set; } - public async Task Load() + public async Task Load(CancellationToken token = default) { - Instance = await repository.GetVariables(tenant).ConfigureAwait(false); + Instance = await repository.GetVariables(tenant, token).ConfigureAwait(false); return this; } @@ -30,9 +31,9 @@ public TenantVariablesEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.ModifyVariables(tenant, Instance).ConfigureAwait(false); + Instance = await repository.ModifyVariables(tenant, Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/VariableSetEditor.cs b/source/Octopus.Client/Editors/Async/VariableSetEditor.cs index e0697fcdd..d6105197a 100644 --- a/source/Octopus.Client/Editors/Async/VariableSetEditor.cs +++ b/source/Octopus.Client/Editors/Async/VariableSetEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -16,9 +17,9 @@ public VariableSetEditor(IVariableSetRepository repository) public VariableSetResource Instance { get; private set; } - public async Task Load(string id) + public async Task Load(string id, CancellationToken token = default) { - Instance = await repository.Get(id).ConfigureAwait(false); + Instance = await repository.Get(id, token).ConfigureAwait(false); return this; } @@ -58,9 +59,9 @@ public VariableSetEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/WorkerEditor.cs b/source/Octopus.Client/Editors/Async/WorkerEditor.cs index 6eae3fb0e..4506e1aaa 100644 --- a/source/Octopus.Client/Editors/Async/WorkerEditor.cs +++ b/source/Octopus.Client/Editors/Async/WorkerEditor.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Model.Endpoints; @@ -21,9 +22,10 @@ public WorkerEditor(IWorkerRepository repository) public async Task CreateOrModify( string name, EndpointResource endpoint, - WorkerPoolResource[] workerpools) + WorkerPoolResource[] workerpools, + CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new WorkerResource @@ -31,7 +33,7 @@ public async Task CreateOrModify( Name = name, Endpoint = endpoint, WorkerPoolIds = new ReferenceCollection(workerpools.Select(e => e.Id)) - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { @@ -39,7 +41,7 @@ public async Task CreateOrModify( existing.Endpoint = endpoint; existing.WorkerPoolIds.ReplaceAll(workerpools.Select(e => e.Id)); - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -51,9 +53,9 @@ public WorkerEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Editors/Async/WorkerPoolEditor.cs b/source/Octopus.Client/Editors/Async/WorkerPoolEditor.cs index 6a827c0b7..c4fad32ee 100644 --- a/source/Octopus.Client/Editors/Async/WorkerPoolEditor.cs +++ b/source/Octopus.Client/Editors/Async/WorkerPoolEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Repositories.Async; @@ -16,43 +17,43 @@ public WorkerPoolEditor(IWorkerPoolRepository repository) public WorkerPoolResource Instance { get; private set; } - public async Task CreateOrModify(string name) + public async Task CreateOrModify(string name, CancellationToken token) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new WorkerPoolResource { Name = name, - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; } - public async Task CreateOrModify(string name, string description) + public async Task CreateOrModify(string name, string description, CancellationToken token = default) { - var existing = await repository.FindByName(name).ConfigureAwait(false); + var existing = await repository.FindByName(name, token: token).ConfigureAwait(false); if (existing == null) { Instance = await repository.Create(new WorkerPoolResource { Name = name, Description = description - }).ConfigureAwait(false); + }, token: token).ConfigureAwait(false); } else { existing.Name = name; existing.Description = description; - Instance = await repository.Modify(existing).ConfigureAwait(false); + Instance = await repository.Modify(existing, token).ConfigureAwait(false); } return this; @@ -64,9 +65,9 @@ public WorkerPoolEditor Customize(Action customize) return this; } - public async Task Save() + public async Task Save(CancellationToken token = default) { - Instance = await repository.Modify(Instance).ConfigureAwait(false); + Instance = await repository.Modify(Instance, token).ConfigureAwait(false); return this; } } diff --git a/source/Octopus.Client/Operations/RegisterMachineOperation.cs b/source/Octopus.Client/Operations/RegisterMachineOperation.cs index cf6d7bb2f..1bb76f577 100644 --- a/source/Octopus.Client/Operations/RegisterMachineOperation.cs +++ b/source/Octopus.Client/Operations/RegisterMachineOperation.cs @@ -181,7 +181,7 @@ async Task> GetTenants(IOctopusSpaceAsyncRepository reposit var missing = Tenants.Except(tenantsByName.Select(e => e.Name), StringComparer.OrdinalIgnoreCase).ToArray(); - var tenantsById = await repository.Tenants.Get(missing).ConfigureAwait(false); + var tenantsById = await repository.Tenants.Get(ids: missing).ConfigureAwait(false); missing = missing.Except(tenantsById.Select(e => e.Id), StringComparer.OrdinalIgnoreCase).ToArray(); if (missing.Any()) diff --git a/source/Octopus.Client/Repositories/Async/AccountRepository.cs b/source/Octopus.Client/Repositories/Async/AccountRepository.cs index 65591cd21..17350b605 100644 --- a/source/Octopus.Client/Repositories/Async/AccountRepository.cs +++ b/source/Octopus.Client/Repositories/Async/AccountRepository.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Extensibility; using Octopus.Client.Extensions; @@ -14,19 +15,19 @@ public interface IAccountRepository : IResourceRepository, ICreate() where TAccount : AccountResource; - Task GetOfType(string idOrHref) where TAccount : AccountResource; - Task> GetOfType(params string[] ids) where TAccount : AccountResource; - Task RefreshOfType(TAccount resource) where TAccount : AccountResource; + Task GetOfType(string idOrHref, CancellationToken token = default) where TAccount : AccountResource; + Task> GetOfType(CancellationToken token = default, params string[] ids) where TAccount : AccountResource; + Task RefreshOfType(TAccount resource, CancellationToken token = default) where TAccount : AccountResource; - Task FindByNameOfType(string name) where TAccount : AccountResource; - Task> FindByNamesOfType(IEnumerable names) where TAccount : AccountResource; + Task FindByNameOfType(string name, CancellationToken token = default) where TAccount : AccountResource; + Task> FindByNamesOfType(IEnumerable names, CancellationToken token = default) where TAccount : AccountResource; - Task PaginateOfType(Func, bool> getNextPage, object pathParameters = null) where TAccount : AccountResource; - Task FindOneOfType(Func search, object pathParameters = null) where TAccount : AccountResource; - Task> FindManyOfType(Func search, object pathParameters = null) where TAccount : AccountResource; - Task> FindAllOfType(object pathParameters = null) where TAccount : AccountResource; + Task PaginateOfType(Func, bool> getNextPage, object pathParameters = null, CancellationToken token = default) where TAccount : AccountResource; + Task FindOneOfType(Func search, object pathParameters = null, CancellationToken token = default) where TAccount : AccountResource; + Task> FindManyOfType(Func search, object pathParameters = null, CancellationToken token = default) where TAccount : AccountResource; + Task> FindAllOfType(object pathParameters = null, CancellationToken token = default) where TAccount : AccountResource; - Task GetAccountUsage(AccountResource account); + Task GetAccountUsage(AccountResource account, CancellationToken token = default); } class AccountRepository : BasicRepository, IAccountRepository @@ -36,25 +37,25 @@ public AccountRepository(IOctopusAsyncRepository repository) { } - public async Task GetOfType(string idOrHref) where TAccount : AccountResource + public async Task GetOfType(string idOrHref, CancellationToken token = default) where TAccount : AccountResource { - var account = await base.Get(idOrHref).ConfigureAwait(false); + var account = await base.Get(idOrHref, token).ConfigureAwait(false); return account as TAccount; } - public async Task> GetOfType(params string[] ids) where TAccount : AccountResource + public async Task> GetOfType(CancellationToken token = default, params string[] ids) where TAccount : AccountResource { - var accounts = await base.Get(ids).ConfigureAwait(false); + var accounts = await base.Get(token, ids).ConfigureAwait(false); return accounts as List; } - public async Task RefreshOfType(TAccount resource) where TAccount : AccountResource + public async Task RefreshOfType(TAccount resource, CancellationToken token = default) where TAccount : AccountResource { - var account = await base.Refresh(resource).ConfigureAwait(false); + var account = await base.Refresh(resource, token).ConfigureAwait(false); return account as TAccount; } - public Task FindByNameOfType(string name) where TAccount : AccountResource + public Task FindByNameOfType(string name, CancellationToken token = default) where TAccount : AccountResource { var accountType = DetermineAccountType(); name = (name ?? string.Empty).Trim(); @@ -64,10 +65,10 @@ public Task FindByNameOfType(string name) where TAccount : A if (r is INamedResource named) return string.Equals((named.Name ?? string.Empty).Trim(), name, StringComparison.OrdinalIgnoreCase); return false; - }, pathParameters: new {accountType, name}); + }, pathParameters: new {accountType, name}, token); } - public Task> FindByNamesOfType(IEnumerable names) where TAccount : AccountResource + public Task> FindByNamesOfType(IEnumerable names, CancellationToken token = default) where TAccount : AccountResource { var nameSet = new HashSet((names ?? new string[0]).Select(n => (n ?? string.Empty).Trim()), StringComparer.OrdinalIgnoreCase); return FindManyOfType(r => @@ -75,7 +76,7 @@ public Task> FindByNamesOfType(IEnumerable name if (r is INamedResource named) return nameSet.Contains((named.Name ?? string.Empty).Trim()); return false; - }, pathParameters: DetermineAccountType()); + }, pathParameters: DetermineAccountType(), token); } object PathParametersOfType(object pathParameters) where TAccount : AccountResource @@ -86,43 +87,43 @@ object PathParametersOfType(object pathParameters) where TAccount : Ac return new {accountType}; } - public async Task PaginateOfType(Func, bool> getNextPage, object pathParameters = null) where TAccount : AccountResource + public async Task PaginateOfType(Func, bool> getNextPage, object pathParameters = null, CancellationToken token = default) where TAccount : AccountResource { - await Client.Paginate(await Repository.Link(CollectionLinkName).ConfigureAwait(false), PathParametersOfType(pathParameters), getNextPage).ConfigureAwait(false); + await Client.Paginate(await Repository.Link(CollectionLinkName).ConfigureAwait(false), PathParametersOfType(pathParameters), getNextPage, token).ConfigureAwait(false); } - public async Task FindOneOfType(Func search, object pathParameters = null) where TAccount : AccountResource + public async Task FindOneOfType(Func search, object pathParameters = null, CancellationToken token = default) where TAccount : AccountResource { TAccount resource = null; await PaginateOfType(page => { resource = page.Items.FirstOrDefault(search); return resource == null; - }, pathParameters: PathParametersOfType(pathParameters)) + }, pathParameters: PathParametersOfType(pathParameters), token) .ConfigureAwait(false); return resource; } - public async Task> FindManyOfType(Func search, object pathParameters = null) where TAccount : AccountResource + public async Task> FindManyOfType(Func search, object pathParameters = null, CancellationToken token = default) where TAccount : AccountResource { var resources = new List(); await PaginateOfType(page => { resources.AddRange(page.Items.Where(search)); return true; - }, pathParameters: PathParametersOfType(pathParameters)) + }, pathParameters: PathParametersOfType(pathParameters), token) .ConfigureAwait(false); return resources; } - public Task> FindAllOfType(object pathParameters = null) where TAccount : AccountResource + public Task> FindAllOfType(object pathParameters = null, CancellationToken token = default) where TAccount : AccountResource { - return FindManyOfType(x => true, PathParametersOfType(pathParameters)); + return FindManyOfType(x => true, PathParametersOfType(pathParameters), token); } - public async Task GetAccountUsage(AccountResource account) + public async Task GetAccountUsage(AccountResource account, CancellationToken token = default) { - return await Client.Get(account.Link("Usages")).ConfigureAwait(false); + return await Client.Get(account.Link("Usages"), token: token).ConfigureAwait(false); } public AccountType DetermineAccountType() where TAccount : AccountResource diff --git a/source/Octopus.Client/Repositories/Async/ActionTemplateRepository.cs b/source/Octopus.Client/Repositories/Async/ActionTemplateRepository.cs index a84ef4bb5..ba608d307 100644 --- a/source/Octopus.Client/Repositories/Async/ActionTemplateRepository.cs +++ b/source/Octopus.Client/Repositories/Async/ActionTemplateRepository.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.IO; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -7,10 +8,10 @@ namespace Octopus.Client.Repositories.Async { public interface IActionTemplateRepository : ICreate, IModify, IDelete, IGet, IFindByName, IGetAll { - Task> Search(); - Task GetVersion(ActionTemplateResource resource, int version); - Task UpdateActions(ActionTemplateResource actionTemplate, ActionsUpdateResource update); - Task SetLogo(ActionTemplateResource resource, string fileName, Stream contents); + Task> Search(CancellationToken token = default); + Task GetVersion(ActionTemplateResource resource, int version, CancellationToken token = default); + Task UpdateActions(ActionTemplateResource actionTemplate, ActionsUpdateResource update, CancellationToken token = default); + Task SetLogo(ActionTemplateResource resource, string fileName, Stream contents, CancellationToken token = default); } class ActionTemplateRepository : BasicRepository, IActionTemplateRepository @@ -19,29 +20,29 @@ public ActionTemplateRepository(IOctopusAsyncRepository repository) : base(repos { } - public async Task> Search() + public async Task> Search(CancellationToken token = default) { - return await Client.Get>(await Repository.Link("ActionTemplatesSearch").ConfigureAwait(false)).ConfigureAwait(false); + return await Client.Get>(await Repository.Link("ActionTemplatesSearch").ConfigureAwait(false), token: token).ConfigureAwait(false); } - public async Task> Categories() + public async Task> Categories(CancellationToken token = default) { - return await Client.Get>(await Repository.Link("ActionTemplatesCategories").ConfigureAwait(false)).ConfigureAwait(false); + return await Client.Get>(await Repository.Link("ActionTemplatesCategories").ConfigureAwait(false), token: token).ConfigureAwait(false); } - public Task GetVersion(ActionTemplateResource resource, int version) + public Task GetVersion(ActionTemplateResource resource, int version, CancellationToken token = default) { - return Client.Get(resource.Links["Versions"], new { version }); + return Client.Get(resource.Links["Versions"], new { version }, token); } - public Task UpdateActions(ActionTemplateResource actionTemplate, ActionsUpdateResource update) + public Task UpdateActions(ActionTemplateResource actionTemplate, ActionsUpdateResource update, CancellationToken token = default) { - return Client.Post(actionTemplate.Links["ActionsUpdate"], update, new { actionTemplate.Id }); + return Client.Post(actionTemplate.Links["ActionsUpdate"], update, new { actionTemplate.Id }, token); } - public Task SetLogo(ActionTemplateResource resource, string fileName, Stream contents) + public Task SetLogo(ActionTemplateResource resource, string fileName, Stream contents, CancellationToken token = default) { - return Client.Post(resource.Link("Logo"), new FileUpload { Contents = contents, FileName = fileName }, false); + return Client.Post(resource.Link("Logo"), new FileUpload { Contents = contents, FileName = fileName }, false, token); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/ArtifactRepository.cs b/source/Octopus.Client/Repositories/Async/ArtifactRepository.cs index 97af9e37f..de76c9957 100644 --- a/source/Octopus.Client/Repositories/Async/ArtifactRepository.cs +++ b/source/Octopus.Client/Repositories/Async/ArtifactRepository.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Extensibility; using Octopus.Client.Model; @@ -13,9 +14,9 @@ public interface IArtifactRepository : IModify, IDelete { - Task GetContent(ArtifactResource artifact); - Task PutContent(ArtifactResource artifact, Stream contentStream); - Task> FindRegarding(IResource resource); + Task GetContent(ArtifactResource artifact, CancellationToken token = default); + Task PutContent(ArtifactResource artifact, Stream contentStream, CancellationToken token = default); + Task> FindRegarding(IResource resource, CancellationToken token = default); } class ArtifactRepository : BasicRepository, IArtifactRepository @@ -25,19 +26,19 @@ public ArtifactRepository(IOctopusAsyncRepository repository) { } - public Task GetContent(ArtifactResource artifact) + public Task GetContent(ArtifactResource artifact, CancellationToken token = default) { - return Client.GetContent(artifact.Link("Content")); + return Client.GetContent(artifact.Link("Content"), token: token); } - public Task PutContent(ArtifactResource artifact, Stream contentStream) + public Task PutContent(ArtifactResource artifact, Stream contentStream, CancellationToken token = default) { - return Client.PutContent(artifact.Link("Content"), contentStream); + return Client.PutContent(artifact.Link("Content"), contentStream, token); } - public async Task> FindRegarding(IResource resource) + public async Task> FindRegarding(IResource resource, CancellationToken token = default) { - return await Client.List(await Repository.Link("Artifacts").ConfigureAwait(false), new { regarding = resource.Id }).ConfigureAwait(false); + return await Client.List(await Repository.Link("Artifacts").ConfigureAwait(false), new { regarding = resource.Id }, token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/BackupRepository.cs b/source/Octopus.Client/Repositories/Async/BackupRepository.cs index 556697822..a97d9d946 100644 --- a/source/Octopus.Client/Repositories/Async/BackupRepository.cs +++ b/source/Octopus.Client/Repositories/Async/BackupRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,8 +7,8 @@ namespace Octopus.Client.Repositories.Async { public interface IBackupRepository { - Task GetConfiguration(); - Task ModifyConfiguration(BackupConfigurationResource backupConfiguration); + Task GetConfiguration(CancellationToken token = default); + Task ModifyConfiguration(BackupConfigurationResource backupConfiguration, CancellationToken token = default); } class BackupRepository : IBackupRepository @@ -21,14 +22,14 @@ public BackupRepository(IOctopusAsyncRepository repository) this.client = repository.Client; } - public async Task GetConfiguration() + public async Task GetConfiguration(CancellationToken token = default) { - return await client.Get(await repository.Link("BackupConfiguration").ConfigureAwait(false)).ConfigureAwait(false); + return await client.Get(await repository.Link("BackupConfiguration").ConfigureAwait(false), token: token).ConfigureAwait(false); } - public Task ModifyConfiguration(BackupConfigurationResource backupConfiguration) + public Task ModifyConfiguration(BackupConfigurationResource backupConfiguration, CancellationToken token = default) { - return client.Update(backupConfiguration.Link("Self"), backupConfiguration); + return client.Update(backupConfiguration.Link("Self"), backupConfiguration, token: token); } } } diff --git a/source/Octopus.Client/Repositories/Async/BasicRepository.cs b/source/Octopus.Client/Repositories/Async/BasicRepository.cs index e17e4590e..11962e8df 100644 --- a/source/Octopus.Client/Repositories/Async/BasicRepository.cs +++ b/source/Octopus.Client/Repositories/Async/BasicRepository.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Exceptions; using Octopus.Client.Extensibility; @@ -101,43 +102,43 @@ protected async Task EnsureServerIsMinimumVersion(SemanticVersion requiredVersio } } - public virtual async Task Create(TResource resource, object pathParameters = null) + public virtual async Task Create(TResource resource, object pathParameters = null, CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible(); var link = await ResolveLink().ConfigureAwait(false); await AssertSpaceIdMatchesResource(resource).ConfigureAwait(false); EnrichSpaceId(resource); - return await Client.Create(link, resource, pathParameters).ConfigureAwait(false); + return await Client.Create(link, resource, pathParameters, token).ConfigureAwait(false); } - public virtual async Task Modify(TResource resource) + public virtual async Task Modify(TResource resource, CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible().ConfigureAwait(false); await AssertSpaceIdMatchesResource(resource).ConfigureAwait(false); - return await Client.Update(resource.Links["Self"], resource).ConfigureAwait(false); + return await Client.Update(resource.Links["Self"], resource, token).ConfigureAwait(false); } - public async Task Delete(TResource resource) + public async Task Delete(TResource resource, CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible().ConfigureAwait(false); await AssertSpaceIdMatchesResource(resource).ConfigureAwait(false); - await Client.Delete(resource.Links["Self"]).ConfigureAwait(false); + await Client.Delete(resource.Links["Self"], token).ConfigureAwait(false); } - public async Task Paginate(Func, bool> getNextPage, string path = null, object pathParameters = null) + public async Task Paginate(Func, bool> getNextPage, string path = null, object pathParameters = null, CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible(); var link = await ResolveLink().ConfigureAwait(false); var parameters = ParameterHelper.CombineParameters(GetAdditionalQueryParameters(), pathParameters); - await Client.Paginate(path ?? link, parameters, getNextPage).ConfigureAwait(false); + await Client.Paginate(path ?? link, parameters, getNextPage, token).ConfigureAwait(false); } - public async Task FindOne(Func search, string path = null, object pathParameters = null) + public async Task FindOne(Func search, string path = null, object pathParameters = null, CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible(); @@ -146,12 +147,12 @@ await Paginate(page => { resource = page.Items.FirstOrDefault(search); return resource == null; - }, path, pathParameters) + }, path, pathParameters, token) .ConfigureAwait(false); return resource; } - public async Task> FindMany(Func search, string path = null, object pathParameters = null) + public async Task> FindMany(Func search, string path = null, object pathParameters = null, CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible(); @@ -160,28 +161,28 @@ await Paginate(page => { resources.AddRange(page.Items.Where(search)); return true; - }, path, pathParameters) + }, path, pathParameters, token) .ConfigureAwait(false); return resources; } - public Task> FindAll(string path = null, object pathParameters = null) + public Task> FindAll(string path = null, object pathParameters = null, CancellationToken token = default) { ThrowIfServerVersionIsNotCompatible().ConfigureAwait(false); - return FindMany(r => true, path, pathParameters); + return FindMany(r => true, path, pathParameters, token); } - public async Task> GetAll() + public async Task> GetAll(CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible(); var link = await ResolveLink().ConfigureAwait(false); var parameters = ParameterHelper.CombineParameters(GetAdditionalQueryParameters(), new { id = IdValueConstant.IdAll }); - return await Client.Get>(link, parameters).ConfigureAwait(false); + return await Client.Get>(link, parameters, token).ConfigureAwait(false); } - public Task FindByName(string name, string path = null, object pathParameters = null) + public Task FindByName(string name, string path = null, object pathParameters = null, CancellationToken token = default) { ThrowIfServerVersionIsNotCompatible().ConfigureAwait(false); @@ -196,10 +197,10 @@ public Task FindByName(string name, string path = null, object pathPa var named = r as INamedResource; if (named != null) return string.Equals((named.Name ?? string.Empty).Trim(), name, StringComparison.OrdinalIgnoreCase); return false; - }, path, pathParameters); + }, path, pathParameters, token); } - public Task> FindByNames(IEnumerable names, string path = null, object pathParameters = null) + public Task> FindByNames(IEnumerable names, string path = null, object pathParameters = null, CancellationToken token = default) { ThrowIfServerVersionIsNotCompatible().ConfigureAwait(false); @@ -209,10 +210,10 @@ public Task> FindByNames(IEnumerable names, string path var named = r as INamedResource; if (named != null) return nameSet.Contains((named.Name ?? string.Empty).Trim()); return false; - }, path, pathParameters); + }, path, pathParameters, token); } - public async Task Get(string idOrHref) + public async Task Get(string idOrHref, CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible(); @@ -223,12 +224,12 @@ public async Task Get(string idOrHref) var additionalQueryParameters = GetAdditionalQueryParameters(); var parameters = ParameterHelper.CombineParameters(additionalQueryParameters, new { id = idOrHref }); var getTask = idOrHref.StartsWith("/", StringComparison.OrdinalIgnoreCase) - ? Client.Get(idOrHref, additionalQueryParameters).ConfigureAwait(false) - : Client.Get(link, parameters).ConfigureAwait(false); + ? Client.Get(idOrHref, additionalQueryParameters, token).ConfigureAwait(false) + : Client.Get(link, parameters, token).ConfigureAwait(false); return await getTask; } - public virtual async Task> Get(params string[] ids) + public virtual async Task> Get(CancellationToken token = default, params string[] ids) { await ThrowIfServerVersionIsNotCompatible(); @@ -250,18 +251,19 @@ await Client.Paginate( { resources.AddRange(page.Items); return true; - }) + }, + token) .ConfigureAwait(false); return resources; } - public Task Refresh(TResource resource) + public Task Refresh(TResource resource, CancellationToken token = default) { ThrowIfServerVersionIsNotCompatible().ConfigureAwait(false); if (resource == null) throw new ArgumentNullException("resource"); - return Get(resource.Id); + return Get(resource.Id, token); } protected virtual void EnrichSpaceId(TResource resource) diff --git a/source/Octopus.Client/Repositories/Async/BuildInformationRepository.cs b/source/Octopus.Client/Repositories/Async/BuildInformationRepository.cs index a749ef106..d27f6e9c4 100644 --- a/source/Octopus.Client/Repositories/Async/BuildInformationRepository.cs +++ b/source/Octopus.Client/Repositories/Async/BuildInformationRepository.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Exceptions; using Octopus.Client.Logging; @@ -19,18 +20,18 @@ public BuildInformationRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public async Task Get(string id) + public async Task Get(string id, CancellationToken token = default) { var link = await repository.Link("BuildInformation").ConfigureAwait(false); - return await repository.Client.Get(link, new { id }).ConfigureAwait(false); + return await repository.Client.Get(link, new { id }, token).ConfigureAwait(false); } - public Task Push(string packageId, string version, OctopusBuildInformation octopusMetadata, bool replaceExisting) + public Task Push(string packageId, string version, OctopusBuildInformation octopusMetadata, bool replaceExisting, CancellationToken token = default) { - return Push(packageId, version, octopusMetadata, replaceExisting ? OverwriteMode.OverwriteExisting : OverwriteMode.FailIfExists); + return Push(packageId, version, octopusMetadata, replaceExisting ? OverwriteMode.OverwriteExisting : OverwriteMode.FailIfExists, token); } - public async Task Push(string packageId, string version, OctopusBuildInformation octopusMetadata, OverwriteMode overwriteMode) + public async Task Push(string packageId, string version, OctopusBuildInformation octopusMetadata, OverwriteMode overwriteMode, CancellationToken token = default) { if (string.IsNullOrWhiteSpace(packageId)) throw new ArgumentException("A package Id must be supplied", nameof(packageId)); @@ -52,40 +53,40 @@ public async Task Push(stri OctopusBuildInformation = octopusMetadata }; - return await repository.Client.Post(link, resource, new { overwriteMode = overwriteMode }).ConfigureAwait(false); + return await repository.Client.Post(link, resource, new { overwriteMode = overwriteMode }, token).ConfigureAwait(false); } - public async Task> ListBuilds(string packageId, int skip = 0, int take = 30) + public async Task> ListBuilds(string packageId, int skip = 0, int take = 30, CancellationToken token = default) { - return await repository.Client.List(await repository.Link("BuildInformation").ConfigureAwait(false), new { packageId = packageId, take, skip }).ConfigureAwait(false); + return await repository.Client.List(await repository.Link("BuildInformation").ConfigureAwait(false), new { packageId = packageId, take, skip }, token).ConfigureAwait(false); } - public async Task> LatestBuilds(int skip = 0, int take = 30) + public async Task> LatestBuilds(int skip = 0, int take = 30, CancellationToken token = default) { - return await repository.Client.List(await repository.Link("BuildInformation").ConfigureAwait(false), new { latest = true, take, skip }).ConfigureAwait(false); + return await repository.Client.List(await repository.Link("BuildInformation").ConfigureAwait(false), new { latest = true, take, skip }, token).ConfigureAwait(false); } - public async Task Delete(OctopusPackageVersionBuildInformationMappedResource buildInformation) + public async Task Delete(OctopusPackageVersionBuildInformationMappedResource buildInformation, CancellationToken token = default) { - await repository.Client.Delete(await repository.Link("BuildInformation").ConfigureAwait(false), new { id = buildInformation.Id }).ConfigureAwait(false); + await repository.Client.Delete(await repository.Link("BuildInformation").ConfigureAwait(false), new { id = buildInformation.Id }, token: token).ConfigureAwait(false); } - public async Task DeleteBuilds(IReadOnlyList builds) + public async Task DeleteBuilds(IReadOnlyList builds, CancellationToken token = default) { - await repository.Client.Delete(await repository.Link("BuildInformationBulk").ConfigureAwait(false), new { ids = builds.Select(p => p.Id).ToArray() }).ConfigureAwait(false); + await repository.Client.Delete(await repository.Link("BuildInformationBulk").ConfigureAwait(false), new { ids = builds.Select(p => p.Id).ToArray() }, token: token).ConfigureAwait(false); } } public interface IBuildInformationRepository { - Task Get(string id); - Task Push(string packageId, string version, OctopusBuildInformation octopusMetadata, OverwriteMode overwriteMode); + Task Get(string id, CancellationToken token = default); + Task Push(string packageId, string version, OctopusBuildInformation octopusMetadata, OverwriteMode overwriteMode, CancellationToken token = default); [Obsolete] - Task Push(string packageId, string version, OctopusBuildInformation octopusMetadata, bool replaceExisting); + Task Push(string packageId, string version, OctopusBuildInformation octopusMetadata, bool replaceExisting, CancellationToken token = default); - Task> ListBuilds(string packageId, int skip = 0, int take = 30); - Task> LatestBuilds(int skip = 0, int take = 30); - Task Delete(OctopusPackageVersionBuildInformationMappedResource buildInformation); - Task DeleteBuilds(IReadOnlyList builds); + Task> ListBuilds(string packageId, int skip = 0, int take = 30, CancellationToken token = default); + Task> LatestBuilds(int skip = 0, int take = 30, CancellationToken token = default); + Task Delete(OctopusPackageVersionBuildInformationMappedResource buildInformation, CancellationToken token = default); + Task DeleteBuilds(IReadOnlyList builds, CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/BuiltInPackageRepositoryRepository.cs b/source/Octopus.Client/Repositories/Async/BuiltInPackageRepositoryRepository.cs index 6bf7c7354..f1f869dba 100644 --- a/source/Octopus.Client/Repositories/Async/BuiltInPackageRepositoryRepository.cs +++ b/source/Octopus.Client/Repositories/Async/BuiltInPackageRepositoryRepository.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Exceptions; using Octopus.Client.Features; @@ -13,17 +14,17 @@ namespace Octopus.Client.Repositories.Async { public interface IBuiltInPackageRepositoryRepository { - Task PushPackage(string fileName, Stream contents, bool replaceExisting = false); - Task PushPackage(string fileName, Stream contents, bool replaceExisting, bool useDeltaCompression); - Task PushPackage(string fileName, Stream contents, OverwriteMode overwriteMode); - Task PushPackage(string fileName, Stream contents, OverwriteMode overwriteMode, bool useDeltaCompression); + Task PushPackage(string fileName, Stream contents, bool replaceExisting = false, CancellationToken token = default); + Task PushPackage(string fileName, Stream contents, bool replaceExisting, bool useDeltaCompression, CancellationToken token = default); + Task PushPackage(string fileName, Stream contents, OverwriteMode overwriteMode, CancellationToken token = default); + Task PushPackage(string fileName, Stream contents, OverwriteMode overwriteMode, bool useDeltaCompression, CancellationToken token = default); - Task> ListPackages(string packageId, int skip = 0, int take = 30); - Task> LatestPackages(int skip = 0, int take = 30); - Task DeletePackage(PackageResource package); - Task DeletePackages(IReadOnlyList packages); + Task> ListPackages(string packageId, int skip = 0, int take = 30, CancellationToken token = default); + Task> LatestPackages(int skip = 0, int take = 30, CancellationToken token = default); + Task DeletePackage(PackageResource package, CancellationToken token = default); + Task DeletePackages(IReadOnlyList packages, CancellationToken token = default); - Task GetPackage(string packageId, string version); + Task GetPackage(string packageId, string version, CancellationToken token = default); } class BuiltInPackageRepositoryRepository : IBuiltInPackageRepositoryRepository @@ -36,28 +37,28 @@ public BuiltInPackageRepositoryRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public async Task PushPackage(string fileName, Stream contents, OverwriteMode overwriteMode) + public async Task PushPackage(string fileName, Stream contents, OverwriteMode overwriteMode, CancellationToken token = default) { - return await PushPackage(fileName, contents, overwriteMode, useDeltaCompression: true); + return await PushPackage(fileName, contents, overwriteMode, useDeltaCompression: true, token); } - public async Task PushPackage(string fileName, Stream contents, bool replaceExisting = false) + public async Task PushPackage(string fileName, Stream contents, bool replaceExisting = false, CancellationToken token = default) { - return await PushPackage(fileName, contents, replaceExisting ? OverwriteMode.OverwriteExisting : OverwriteMode.FailIfExists, useDeltaCompression: true); + return await PushPackage(fileName, contents, replaceExisting ? OverwriteMode.OverwriteExisting : OverwriteMode.FailIfExists, useDeltaCompression: true, token); } - public async Task PushPackage(string fileName, Stream contents, bool replaceExisting, bool useDeltaCompression) + public async Task PushPackage(string fileName, Stream contents, bool replaceExisting, bool useDeltaCompression, CancellationToken token = default) { - return await PushPackage(fileName, contents, replaceExisting ? OverwriteMode.OverwriteExisting : OverwriteMode.FailIfExists, useDeltaCompression); + return await PushPackage(fileName, contents, replaceExisting ? OverwriteMode.OverwriteExisting : OverwriteMode.FailIfExists, useDeltaCompression, token); } - public async Task PushPackage(string fileName, Stream contents, OverwriteMode overwriteMode, bool useDeltaCompression) + public async Task PushPackage(string fileName, Stream contents, OverwriteMode overwriteMode, bool useDeltaCompression, CancellationToken token = default) { if (useDeltaCompression) { try { - var deltaResult = await AttemptDeltaPush(fileName, contents, overwriteMode).ConfigureAwait(false); + var deltaResult = await AttemptDeltaPush(fileName, contents, overwriteMode, token).ConfigureAwait(false); if (deltaResult != null) return deltaResult; } @@ -65,7 +66,7 @@ public async Task PushPackage(string fileName, S { Logger.Info("Delta push timed out: " + ex.Message); - var verificationResult = await VerifyTransfer(fileName, contents).ConfigureAwait(false); + var verificationResult = await VerifyTransfer(fileName, contents, token).ConfigureAwait(false); if (verificationResult != null) return verificationResult; } catch (Exception ex) when (!(ex is OctopusValidationException)) @@ -104,14 +105,14 @@ public async Task PushPackage(string fileName, S } catch (TimeoutException) { - var verificationResult = await VerifyTransfer(fileName, contents); + var verificationResult = await VerifyTransfer(fileName, contents, token); if (verificationResult != null) return verificationResult; throw; } } - private async Task VerifyTransfer(string fileName, Stream contents) + private async Task VerifyTransfer(string fileName, Stream contents, CancellationToken token) { Logger.Info("Trying to find out whether the transfer worked"); @@ -122,16 +123,16 @@ private async Task VerifyTransfer(string fileNam return null; } - var uploadedPackage = await TryFindPackage(packageId, version); + var uploadedPackage = await TryFindPackage(packageId, version, token); return PackageContentComparer.AreSame(uploadedPackage, contents, Logger) ? uploadedPackage : null; } - private async Task TryFindPackage(string packageId, SemanticVersion version) + private async Task TryFindPackage(string packageId, SemanticVersion version, CancellationToken token) { try { - return await repository.BuiltInPackageRepository.GetPackage(packageId, version.ToString()).ConfigureAwait(false); + return await repository.BuiltInPackageRepository.GetPackage(packageId, version.ToString(), token).ConfigureAwait(false); } catch (OctopusResourceNotFoundException) { @@ -139,7 +140,7 @@ private async Task TryFindPackage(string package } } - private async Task AttemptDeltaPush(string fileName, Stream contents, OverwriteMode overwriteMode) + private async Task AttemptDeltaPush(string fileName, Stream contents, OverwriteMode overwriteMode, CancellationToken token) { if (! await repository.HasLink("PackageDeltaSignature").ConfigureAwait(false)) { @@ -157,7 +158,7 @@ private async Task AttemptDeltaPush(string fileN try { Logger.Info($"Requesting signature for delta compression from the server for upload of a package with id '{packageId}' and version '{version}'"); - signatureResult = await repository.Client.Get(await repository.Link("PackageDeltaSignature").ConfigureAwait(false), new {packageId, version}).ConfigureAwait(false); + signatureResult = await repository.Client.Get(await repository.Link("PackageDeltaSignature").ConfigureAwait(false), new {packageId, version}, token).ConfigureAwait(false); } catch (OctopusResourceNotFoundException) { @@ -189,7 +190,8 @@ private async Task AttemptDeltaPush(string fileN var result = await repository.Client.Post( link, new FileUpload() {Contents = delta, FileName = Path.GetFileName(fileName)}, - pathParameters).ConfigureAwait(false); + pathParameters, + token).ConfigureAwait(false); Logger.Info("Delta transfer completed"); @@ -198,28 +200,28 @@ private async Task AttemptDeltaPush(string fileN } } - public async Task> ListPackages(string packageId, int skip = 0, int take = 30) + public async Task> ListPackages(string packageId, int skip = 0, int take = 30, CancellationToken token = default) { - return await repository.Client.List(await repository.Link("Packages").ConfigureAwait(false), new { nuGetPackageId = packageId, take, skip }).ConfigureAwait(false); + return await repository.Client.List(await repository.Link("Packages").ConfigureAwait(false), new { nuGetPackageId = packageId, take, skip }, token).ConfigureAwait(false); } - public async Task GetPackage(string packageId, string version) + public async Task GetPackage(string packageId, string version, CancellationToken token = default) { - return await repository.Client.Get(await repository.Link("Packages").ConfigureAwait(false), new { id = $"{packageId}.{version}" }).ConfigureAwait(false); + return await repository.Client.Get(await repository.Link("Packages").ConfigureAwait(false), new { id = $"{packageId}.{version}" }, token).ConfigureAwait(false); } - public async Task> LatestPackages(int skip = 0, int take = 30) + public async Task> LatestPackages(int skip = 0, int take = 30, CancellationToken token = default) { - return await repository.Client.List(await repository.Link("Packages").ConfigureAwait(false), new { latest = true, take, skip }).ConfigureAwait(false); + return await repository.Client.List(await repository.Link("Packages").ConfigureAwait(false), new { latest = true, take, skip }, token).ConfigureAwait(false); } - public async Task DeletePackage(PackageResource package) + public async Task DeletePackage(PackageResource package, CancellationToken token = default) { - await repository.Client.Delete(await repository.Link("Packages").ConfigureAwait(false), new { id = package.Id }).ConfigureAwait(false); + await repository.Client.Delete(await repository.Link("Packages").ConfigureAwait(false), new { id = package.Id }, token: token).ConfigureAwait(false); } - public async Task DeletePackages(IReadOnlyList packages) - => await repository.Client.Delete(await repository.Link("PackagesBulk").ConfigureAwait(false), new { ids = packages.Select(p => p.Id).ToArray() }).ConfigureAwait(false); + public async Task DeletePackages(IReadOnlyList packages, CancellationToken token = default) + => await repository.Client.Delete(await repository.Link("PackagesBulk").ConfigureAwait(false), new { ids = packages.Select(p => p.Id).ToArray() }, token: token).ConfigureAwait(false); } } diff --git a/source/Octopus.Client/Repositories/Async/CertificateConfigurationRepository.cs b/source/Octopus.Client/Repositories/Async/CertificateConfigurationRepository.cs index c1e391231..238c10032 100644 --- a/source/Octopus.Client/Repositories/Async/CertificateConfigurationRepository.cs +++ b/source/Octopus.Client/Repositories/Async/CertificateConfigurationRepository.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -7,8 +8,8 @@ namespace Octopus.Client.Repositories.Async { public interface ICertificateConfigurationRepository : IGet, IFindByName { - Task GetOctopusCertificate(); - Task GetPublicCertificate(CertificateConfigurationResource certificateConfiguration); + Task GetOctopusCertificate(CancellationToken token = default); + Task GetPublicCertificate(CertificateConfigurationResource certificateConfiguration, CancellationToken token = default); } class CertificateConfigurationRepository : BasicRepository, ICertificateConfigurationRepository @@ -17,14 +18,14 @@ public CertificateConfigurationRepository(IOctopusAsyncRepository repository) : { } - public Task GetOctopusCertificate() + public Task GetOctopusCertificate(CancellationToken token = default) { - return Get("certificate-global"); + return Get("certificate-global", token); } - public Task GetPublicCertificate(CertificateConfigurationResource certificateConfiguration) + public Task GetPublicCertificate(CertificateConfigurationResource certificateConfiguration, CancellationToken token = default) { - return Client.GetContent(certificateConfiguration.Links["PublicCer"]); + return Client.GetContent(certificateConfiguration.Links["PublicCer"], token: token); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/CertificateRepository.cs b/source/Octopus.Client/Repositories/Async/CertificateRepository.cs index 65c2c3d05..10e0c6863 100644 --- a/source/Octopus.Client/Repositories/Async/CertificateRepository.cs +++ b/source/Octopus.Client/Repositories/Async/CertificateRepository.cs @@ -1,4 +1,5 @@ using System.IO; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -13,8 +14,9 @@ public interface ICertificateRepository : IResourceRepository, IGetThe format of the exported certificate. If null, the certificate will be exported exactly as it was originally uploaded (including with original password). /// Password for the exported file. This value is only used if exporting to PCKS#12 or PEM formats. /// Specifies whether the certificate private-key (if present) should be included in the exported file. This value is only be used when exporting to PEM format. + /// /// The exported certificate data. - Task Export(CertificateResource certificate, CertificateFormat? format = null, string password = null, bool includePrivateKey = false); + Task Export(CertificateResource certificate, CertificateFormat? format = null, string password = null, bool includePrivateKey = false, CancellationToken token = default); /// /// Exports the certificate in PEM format @@ -22,8 +24,9 @@ public interface ICertificateRepository : IResourceRepository, IGetThe certificate to export. /// Specifies whether the certificate private-key (if present) should be included in the exported file. /// Options specifying which certificates should be included when chain certificates are present + /// /// The exported certificate in PEM format - Task ExportAsPem(CertificateResource certificate, bool includePrivateKey = false, CertificateExportPemOptions pemOptions = CertificateExportPemOptions.PrimaryOnly); + Task ExportAsPem(CertificateResource certificate, bool includePrivateKey = false, CertificateExportPemOptions pemOptions = CertificateExportPemOptions.PrimaryOnly, CancellationToken token = default); /// /// Replace with a new certificate. @@ -33,19 +36,20 @@ public interface ICertificateRepository : IResourceRepository, IGetThe certificate to be replaced /// The new base64-encoded certificate-data /// The new password + /// /// The replaced certificate. The ReplacedBy property will contain the ID of the new certificate (which will be the previous ID of the replaced certificate). - Task Replace(CertificateResource certificate, string certificateData, string password); + Task Replace(CertificateResource certificate, string certificateData, string password, CancellationToken token = default); /// /// Archive a certificate. /// Archiving makes a certificate unavailable for selection as the value of a variable. /// - Task Archive(CertificateResource certificate); + Task Archive(CertificateResource certificate, CancellationToken token = default); /// /// Unarchive a certificate. This makes the certificate again available for selection as the value of a variable. /// - Task UnArchive(CertificateResource certificate); + Task UnArchive(CertificateResource certificate, CancellationToken token = default); // For backwards compatibility. // The CertificateRepository was renamed to CertificateConfigurationRepository when the Certificates feature was @@ -53,7 +57,7 @@ public interface ICertificateRepository : IResourceRepository, IGet /// Returns details of the certificate used by Octopus for communications. /// - Task GetOctopusCertificate(); + Task GetOctopusCertificate(CancellationToken token = default); } class CertificateRepository : BasicRepository, ICertificateRepository @@ -63,37 +67,37 @@ public CertificateRepository(IOctopusAsyncRepository repository) { } - public Task Export(CertificateResource certificate, CertificateFormat? format = null, string password = null, bool includePrivateKey = false) + public Task Export(CertificateResource certificate, CertificateFormat? format = null, string password = null, bool includePrivateKey = false, CancellationToken token = default) { var pathParameters = format.HasValue ? new { format= format.Value, password = password, includePrivateKey = includePrivateKey} : null; - return Client.GetContent(certificate.Link("Export"), pathParameters); + return Client.GetContent(certificate.Link("Export"), pathParameters, token); } public Task ExportAsPem(CertificateResource certificate, bool includePrivateKey = false, - CertificateExportPemOptions pemOptions = CertificateExportPemOptions.PrimaryOnly) + CertificateExportPemOptions pemOptions = CertificateExportPemOptions.PrimaryOnly, CancellationToken token = default) { var parameters = new { format = CertificateFormat.Pem, includePrivateKey, pemOptions }; - return Client.GetContent(certificate.Link("Export"), parameters); + return Client.GetContent(certificate.Link("Export"), parameters, token); } - public Task Replace(CertificateResource certificate, string certificateData, string password) + public Task Replace(CertificateResource certificate, string certificateData, string password, CancellationToken token = default) { - return Client.Post(certificate.Link("Replace"), new {certificateData = certificateData, password = password}); + return Client.Post(certificate.Link("Replace"), new {certificateData = certificateData, password = password}, token: token); } - public Task Archive(CertificateResource certificate) + public Task Archive(CertificateResource certificate, CancellationToken token = default) { - return Client.Post(certificate.Link("Archive")); + return Client.Post(certificate.Link("Archive"), token: token); } - public Task UnArchive(CertificateResource certificate) + public Task UnArchive(CertificateResource certificate, CancellationToken token = default) { - return Client.Post(certificate.Link("Unarchive")); + return Client.Post(certificate.Link("Unarchive"), token: token); } - public Task GetOctopusCertificate() + public Task GetOctopusCertificate(CancellationToken token = default) { - return Repository.CertificateConfiguration.GetOctopusCertificate(); + return Repository.CertificateConfiguration.GetOctopusCertificate(token); } } } diff --git a/source/Octopus.Client/Repositories/Async/ChannelRepository.cs b/source/Octopus.Client/Repositories/Async/ChannelRepository.cs index 0444cd499..3f8ffcdf4 100644 --- a/source/Octopus.Client/Repositories/Async/ChannelRepository.cs +++ b/source/Octopus.Client/Repositories/Async/ChannelRepository.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -7,13 +8,13 @@ namespace Octopus.Client.Repositories.Async { public interface IChannelRepository : ICreate, IModify, IGet, IDelete, IPaginate { - Task FindByName(ProjectResource project, string name); - Task CreateOrModify(ProjectResource project, string name); - Task CreateOrModify(ProjectResource project, string name, string description); + Task FindByName(ProjectResource project, string name, CancellationToken token = default); + Task CreateOrModify(ProjectResource project, string name, CancellationToken token = default); + Task CreateOrModify(ProjectResource project, string name, string description, CancellationToken token = default); Task> GetReleases(ChannelResource channel, - int skip = 0, int? take = null, string searchByVersion = null); - Task> GetAllReleases(ChannelResource channel); - Task GetReleaseByVersion(ChannelResource channel, string version); + int skip = 0, int? take = null, string searchByVersion = null, CancellationToken token = default); + Task> GetAllReleases(ChannelResource channel, CancellationToken token = default); + Task GetReleaseByVersion(ChannelResource channel, string version, CancellationToken token = default); } class ChannelRepository : BasicRepository, IChannelRepository @@ -23,35 +24,35 @@ public ChannelRepository(IOctopusAsyncRepository repository) { } - public Task FindByName(ProjectResource project, string name) + public Task FindByName(ProjectResource project, string name, CancellationToken token = default) { - return FindByName(name, path: project.Link("Channels")); + return FindByName(name, path: project.Link("Channels"), token: token); } - public Task CreateOrModify(ProjectResource project, string name) + public Task CreateOrModify(ProjectResource project, string name, CancellationToken token = default) { - return new ChannelEditor(this).CreateOrModify(project, name); + return new ChannelEditor(this).CreateOrModify(project, name, token); } - public Task CreateOrModify(ProjectResource project, string name, string description) + public Task CreateOrModify(ProjectResource project, string name, string description, CancellationToken token = default) { - return new ChannelEditor(this).CreateOrModify(project, name, description); + return new ChannelEditor(this).CreateOrModify(project, name, description, token); } public Task> GetReleases(ChannelResource channel, - int skip = 0, int? take = null, string searchByVersion = null) + int skip = 0, int? take = null, string searchByVersion = null, CancellationToken token = default) { - return Client.List(channel.Link("Releases"), new { skip, take, searchByVersion }); + return Client.List(channel.Link("Releases"), new { skip, take, searchByVersion }, token); } - public Task> GetAllReleases(ChannelResource channel) + public Task> GetAllReleases(ChannelResource channel, CancellationToken token = default) { - return Client.ListAll(channel.Link("Releases")); + return Client.ListAll(channel.Link("Releases"), token: token); } - public Task GetReleaseByVersion(ChannelResource channel, string version) + public Task GetReleaseByVersion(ChannelResource channel, string version, CancellationToken token = default) { - return Client.Get(channel.Link("Releases"), new { version }); + return Client.Get(channel.Link("Releases"), new { version }, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/CommunityActionTemplateRepository.cs b/source/Octopus.Client/Repositories/Async/CommunityActionTemplateRepository.cs index b0fe051ef..34d46218f 100644 --- a/source/Octopus.Client/Repositories/Async/CommunityActionTemplateRepository.cs +++ b/source/Octopus.Client/Repositories/Async/CommunityActionTemplateRepository.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Exceptions; using Octopus.Client.Model; @@ -9,9 +10,9 @@ namespace Octopus.Client.Repositories.Async { public interface ICommunityActionTemplateRepository : IGet { - Task GetInstalledTemplate(CommunityActionTemplateResource resource); - Task Install(CommunityActionTemplateResource resource); - Task UpdateInstallation(CommunityActionTemplateResource resource); + Task GetInstalledTemplate(CommunityActionTemplateResource resource, CancellationToken token = default); + Task Install(CommunityActionTemplateResource resource, CancellationToken token = default); + Task UpdateInstallation(CommunityActionTemplateResource resource, CancellationToken token = default); } class CommunityActionTemplateRepository : BasicRepository, ICommunityActionTemplateRepository @@ -20,7 +21,7 @@ public CommunityActionTemplateRepository(IOctopusAsyncRepository repository) : b { } - public Task Install(CommunityActionTemplateResource resource) + public Task Install(CommunityActionTemplateResource resource, CancellationToken token = default) { var baseLink = resource.Links["Installation"]; var spaceResource = Repository.Scope.Apply(space => space, @@ -29,13 +30,13 @@ public Task Install(CommunityActionTemplateResource resource) if (spaceResource == null) { - return Client.Post(baseLink.ToString()); + return Client.Post(baseLink.ToString(), token: token); } - return Client.Post(baseLink.ToString(), null, new {spaceId = spaceResource.Id}); + return Client.Post(baseLink.ToString(), null, new {spaceId = spaceResource.Id}, token); } - public Task UpdateInstallation(CommunityActionTemplateResource resource) + public Task UpdateInstallation(CommunityActionTemplateResource resource, CancellationToken token = default) { var baseLink = resource.Links["Installation"]; var spaceResource = Repository.Scope.Apply(space => space, @@ -44,13 +45,13 @@ public Task UpdateInstallation(CommunityActionTemplateResource resource) if (spaceResource == null) { - return Client.Put(baseLink.ToString()); + return Client.Put(baseLink.ToString(), token); } - return Client.Put(baseLink.ToString(), null, new {spaceId = spaceResource.Id}); + return Client.Put(baseLink.ToString(), null, new {spaceId = spaceResource.Id}, token); } - public Task GetInstalledTemplate(CommunityActionTemplateResource resource) + public Task GetInstalledTemplate(CommunityActionTemplateResource resource, CancellationToken token = default) { var baseLink = resource.Links["InstalledTemplate"]; var spaceResource = Repository.Scope.Apply(space => space, @@ -59,10 +60,10 @@ public Task GetInstalledTemplate(CommunityActionTemplate if (spaceResource == null) { - return Client.Get(baseLink.ToString()); + return Client.Get(baseLink.ToString(), token: token); } - return Client.Get(baseLink.ToString(), new {spaceId = spaceResource.Id}); + return Client.Get(baseLink.ToString(), new {spaceId = spaceResource.Id}, token); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/ConfigurationRepository.cs b/source/Octopus.Client/Repositories/Async/ConfigurationRepository.cs index 40c286a03..f4ccb1bb3 100644 --- a/source/Octopus.Client/Repositories/Async/ConfigurationRepository.cs +++ b/source/Octopus.Client/Repositories/Async/ConfigurationRepository.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Threading; +using System.Threading.Tasks; using Octopus.Client.Extensibility; using Octopus.Client.Model; @@ -6,8 +7,8 @@ namespace Octopus.Client.Repositories.Async { public interface IConfigurationRepository { - Task Get() where T : class, IResource, new(); - Task Modify(T configurationResource) where T : class, IResource, new(); + Task Get(CancellationToken token = default) where T : class, IResource, new(); + Task Modify(T configurationResource, CancellationToken token = default) where T : class, IResource, new(); } class ConfigurationRepository : IConfigurationRepository @@ -21,23 +22,23 @@ public ConfigurationRepository(IOctopusAsyncRepository repository) this.collectionLinkName = "Configuration"; } - public async Task Get() where T : class, IResource, new() + public async Task Get(CancellationToken token = default) where T : class, IResource, new() { var instance = new T(); - var configurationItem = await GetConfigurationItem(instance).ConfigureAwait(false); + var configurationItem = await GetConfigurationItem(instance, token).ConfigureAwait(false); - return await repository.Client.Get(configurationItem.Link("Values")).ConfigureAwait(false); + return await repository.Client.Get(configurationItem.Link("Values"), token: token).ConfigureAwait(false); } - public async Task Modify(T configurationResource) where T : class, IResource, new() + public async Task Modify(T configurationResource, CancellationToken token = default) where T : class, IResource, new() { - var configurationItem = await GetConfigurationItem(configurationResource).ConfigureAwait(false); - return await repository.Client.Update(configurationItem.Link("Values"), configurationResource).ConfigureAwait(false); + var configurationItem = await GetConfigurationItem(configurationResource, token).ConfigureAwait(false); + return await repository.Client.Update(configurationItem.Link("Values"), configurationResource, token: token).ConfigureAwait(false); } - private async Task GetConfigurationItem(IResource instance) + private async Task GetConfigurationItem(IResource instance, CancellationToken token) { - return await repository.Client.Get(await repository.Link(collectionLinkName).ConfigureAwait(false), new { instance.Id }).ConfigureAwait(false); + return await repository.Client.Get(await repository.Link(collectionLinkName).ConfigureAwait(false), new { instance.Id }, token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/DashboardConfigurationRepository.cs b/source/Octopus.Client/Repositories/Async/DashboardConfigurationRepository.cs index 4504b72d6..66631974a 100644 --- a/source/Octopus.Client/Repositories/Async/DashboardConfigurationRepository.cs +++ b/source/Octopus.Client/Repositories/Async/DashboardConfigurationRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,8 +7,8 @@ namespace Octopus.Client.Repositories.Async { public interface IDashboardConfigurationRepository { - Task GetDashboardConfiguration(); - Task ModifyDashboardConfiguration(DashboardConfigurationResource resource); + Task GetDashboardConfiguration(CancellationToken token = default); + Task ModifyDashboardConfiguration(DashboardConfigurationResource resource, CancellationToken token = default); } class DashboardConfigurationRepository : IDashboardConfigurationRepository @@ -19,14 +20,14 @@ public DashboardConfigurationRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public async Task GetDashboardConfiguration() + public async Task GetDashboardConfiguration(CancellationToken token = default) { - return await repository.Client.Get(await repository.Link("DashboardConfiguration").ConfigureAwait(false)).ConfigureAwait(false); + return await repository.Client.Get(await repository.Link("DashboardConfiguration").ConfigureAwait(false), token: token).ConfigureAwait(false); } - public async Task ModifyDashboardConfiguration(DashboardConfigurationResource resource) + public async Task ModifyDashboardConfiguration(DashboardConfigurationResource resource, CancellationToken token = default) { - return await repository.Client.Update(await repository.Link("DashboardConfiguration").ConfigureAwait(false), resource).ConfigureAwait(false); + return await repository.Client.Update(await repository.Link("DashboardConfiguration").ConfigureAwait(false), resource, token: token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/DashboardRepository.cs b/source/Octopus.Client/Repositories/Async/DashboardRepository.cs index ce71b6682..9252ba9e2 100644 --- a/source/Octopus.Client/Repositories/Async/DashboardRepository.cs +++ b/source/Octopus.Client/Repositories/Async/DashboardRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,12 +7,13 @@ namespace Octopus.Client.Repositories.Async { public interface IDashboardRepository { - Task GetDashboard(); + Task GetDashboard(CancellationToken token = default); /// /// /// options for DashboardResource Items property - Task GetDynamicDashboard(string[] projects, string[] environments, DashboardItemsOptions dashboardItemsOptions = DashboardItemsOptions.IncludeCurrentDeploymentOnly); + /// + Task GetDynamicDashboard(string[] projects, string[] environments, DashboardItemsOptions dashboardItemsOptions = DashboardItemsOptions.IncludeCurrentDeploymentOnly, CancellationToken token = default); } class DashboardRepository : IDashboardRepository @@ -23,15 +25,15 @@ public DashboardRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public async Task GetDashboard() + public async Task GetDashboard(CancellationToken token = default) { - return await repository.Client.Get(await repository.Link("Dashboard").ConfigureAwait(false)).ConfigureAwait(false); + return await repository.Client.Get(await repository.Link("Dashboard").ConfigureAwait(false), token: token).ConfigureAwait(false); } - public async Task GetDynamicDashboard(string[] projects, string[] environments, DashboardItemsOptions dashboardItemsOptions = DashboardItemsOptions.IncludeCurrentDeploymentOnly) + public async Task GetDynamicDashboard(string[] projects, string[] environments, DashboardItemsOptions dashboardItemsOptions = DashboardItemsOptions.IncludeCurrentDeploymentOnly, CancellationToken token = default) { var includePrevious = dashboardItemsOptions == DashboardItemsOptions.IncludeCurrentAndPreviousSuccessfulDeployment; - return await repository.Client.Get(await repository.Link("DashboardDynamic").ConfigureAwait(false), new { projects, environments, includePrevious }).ConfigureAwait(false); + return await repository.Client.Get(await repository.Link("DashboardDynamic").ConfigureAwait(false), new { projects, environments, includePrevious }, token: token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/DefectsRepository.cs b/source/Octopus.Client/Repositories/Async/DefectsRepository.cs index ec7ad21d2..7059ca8ba 100644 --- a/source/Octopus.Client/Repositories/Async/DefectsRepository.cs +++ b/source/Octopus.Client/Repositories/Async/DefectsRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,9 +7,9 @@ namespace Octopus.Client.Repositories.Async { public interface IDefectsRepository { - Task> GetDefects(ReleaseResource release); - Task RaiseDefect(ReleaseResource release, string description); - Task ResolveDefect(ReleaseResource release); + Task> GetDefects(ReleaseResource release, CancellationToken token = default); + Task RaiseDefect(ReleaseResource release, string description, CancellationToken token = default); + Task ResolveDefect(ReleaseResource release, CancellationToken token = default); } class DefectsRepository : BasicRepository, IDefectsRepository @@ -18,19 +19,19 @@ public DefectsRepository(IOctopusAsyncRepository repository) { } - public Task> GetDefects(ReleaseResource release) + public Task> GetDefects(ReleaseResource release, CancellationToken token = default) { - return Client.List(release.Link("Defects")); + return Client.List(release.Link("Defects"), token: token); } - public Task RaiseDefect(ReleaseResource release, string description) + public Task RaiseDefect(ReleaseResource release, string description, CancellationToken token = default) { - return Client.Post(release.Link("ReportDefect"), new DefectResource(description)); + return Client.Post(release.Link("ReportDefect"), new DefectResource(description), token: token); } - public Task ResolveDefect(ReleaseResource release) + public Task ResolveDefect(ReleaseResource release, CancellationToken token = default) { - return Client.Post(release.Link("ResolveDefect")); + return Client.Post(release.Link("ResolveDefect"), token: token); } } } diff --git a/source/Octopus.Client/Repositories/Async/DeploymentProcessRepository.cs b/source/Octopus.Client/Repositories/Async/DeploymentProcessRepository.cs index d5842d249..d10f50f70 100644 --- a/source/Octopus.Client/Repositories/Async/DeploymentProcessRepository.cs +++ b/source/Octopus.Client/Repositories/Async/DeploymentProcessRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -7,7 +8,7 @@ namespace Octopus.Client.Repositories.Async public interface IDeploymentProcessRepository : IGet, IModify { IDeploymentProcessBetaRepository Beta(); - Task GetTemplate(DeploymentProcessResource deploymentProcess, ChannelResource channel); + Task GetTemplate(DeploymentProcessResource deploymentProcess, ChannelResource channel, CancellationToken token = default); } class DeploymentProcessRepository : BasicRepository, IDeploymentProcessRepository @@ -25,18 +26,18 @@ public IDeploymentProcessBetaRepository Beta() return beta; } - public Task GetTemplate(DeploymentProcessResource deploymentProcess, ChannelResource channel) + public Task GetTemplate(DeploymentProcessResource deploymentProcess, ChannelResource channel, CancellationToken token = default) { - return Client.Get(deploymentProcess.Link("Template"), new { channel = channel?.Id }); + return Client.Get(deploymentProcess.Link("Template"), new { channel = channel?.Id }, token); } } public interface IDeploymentProcessBetaRepository { - Task Get(ProjectResource projectResource, string gitref = null); + Task Get(ProjectResource projectResource, string gitref = null, CancellationToken token = default); Task Modify(ProjectResource projectResource, DeploymentProcessResource resource, - string commitMessage = null); + string commitMessage = null, CancellationToken token = default); } class DeploymentProcessBetaRepository : IDeploymentProcessBetaRepository @@ -50,24 +51,24 @@ public DeploymentProcessBetaRepository(IOctopusAsyncRepository repository) this.client = repository.Client; } - public async Task Get(ProjectResource projectResource, string gitref = null) + public async Task Get(ProjectResource projectResource, string gitref = null, CancellationToken token = default) { if (!string.IsNullOrWhiteSpace(gitref)) { var branchResource = await repository.Projects.Beta().GetVersionControlledBranch(projectResource, gitref); - return await client.Get(branchResource.Link("DeploymentProcess")); + return await client.Get(branchResource.Link("DeploymentProcess"), token: token); } - return await client.Get(projectResource.Link("DeploymentProcess")); + return await client.Get(projectResource.Link("DeploymentProcess"), token: token); } public async Task Modify(ProjectResource projectResource, - DeploymentProcessResource resource, string commitMessage = null) + DeploymentProcessResource resource, string commitMessage = null, CancellationToken token = default) { if (!projectResource.IsVersionControlled) { - return await client.Update(projectResource.Link("DeploymentProcess"), resource); + return await client.Update(projectResource.Link("DeploymentProcess"), resource, token: token); } var commitResource = new CommitResource @@ -75,8 +76,8 @@ public async Task Modify(ProjectResource projectResou Resource = resource, CommitMessage = commitMessage }; - await client.Update(resource.Link("Self"), commitResource); - return await client.Get(resource.Link("Self")); + await client.Update(resource.Link("Self"), commitResource, token: token); + return await client.Get(resource.Link("Self"), token: token); } } } diff --git a/source/Octopus.Client/Repositories/Async/DeploymentRepository.cs b/source/Octopus.Client/Repositories/Async/DeploymentRepository.cs index a63594ccb..874eb3c1f 100644 --- a/source/Octopus.Client/Repositories/Async/DeploymentRepository.cs +++ b/source/Octopus.Client/Repositories/Async/DeploymentRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,7 +7,7 @@ namespace Octopus.Client.Repositories.Async { public interface IDeploymentRepository : IGet, ICreate, IPaginate, IDelete { - Task GetTask(DeploymentResource resource); + Task GetTask(DeploymentResource resource, CancellationToken token = default); /// /// @@ -15,13 +16,14 @@ public interface IDeploymentRepository : IGet, ICreate /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) + /// /// - Task> FindBy(string[] projects, string[] environments, int skip = 0, int? take = null); + Task> FindBy(string[] projects, string[] environments, int skip = 0, int? take = null, CancellationToken token = default); [Obsolete("This method is not a find all, it still requires paging. So it has been renamed to `FindBy`")] - Task> FindAll(string[] projects, string[] environments, int skip = 0, int? take = null); - Task Paginate(string[] projects, string[] environments, Func, bool> getNextPage); - Task Paginate(string[] projects, string[] environments, string[] tenants, Func, bool> getNextPage); + Task> FindAll(string[] projects, string[] environments, int skip = 0, int? take = null, CancellationToken token = default); + Task Paginate(string[] projects, string[] environments, Func, bool> getNextPage, CancellationToken token = default); + Task Paginate(string[] projects, string[] environments, string[] tenants, Func, bool> getNextPage, CancellationToken token = default); } class DeploymentRepository : BasicRepository, IDeploymentRepository @@ -31,30 +33,30 @@ public DeploymentRepository(IOctopusAsyncRepository repository) { } - public Task GetTask(DeploymentResource resource) + public Task GetTask(DeploymentResource resource, CancellationToken token = default) { - return Client.Get(resource.Link("Task")); + return Client.Get(resource.Link("Task"), token: token); } - public async Task> FindBy(string[] projects, string[] environments, int skip = 0, int? take = null) + public async Task> FindBy(string[] projects, string[] environments, int skip = 0, int? take = null, CancellationToken token = default) { - return await Client.List(await Repository.Link("Deployments").ConfigureAwait(false), new { skip, take, projects = projects ?? new string[0], environments = environments ?? new string[0] }).ConfigureAwait(false); + return await Client.List(await Repository.Link("Deployments").ConfigureAwait(false), new { skip, take, projects = projects ?? new string[0], environments = environments ?? new string[0] }, token).ConfigureAwait(false); } [Obsolete("This method is not a find all, it still requires paging. So it has been renamed to `FindBy`")] - public Task> FindAll(string[] projects, string[] environments, int skip = 0, int? take = null) + public Task> FindAll(string[] projects, string[] environments, int skip = 0, int? take = null, CancellationToken token = default) { - return FindBy(projects, environments, skip, take); + return FindBy(projects, environments, skip, take, token); } - public Task Paginate(string[] projects, string[] environments, Func, bool> getNextPage) + public Task Paginate(string[] projects, string[] environments, Func, bool> getNextPage, CancellationToken token = default) { - return Paginate(projects, environments, new string[0], getNextPage); + return Paginate(projects, environments, new string[0], getNextPage, token); } - public async Task Paginate(string[] projects, string[] environments, string[] tenants, Func, bool> getNextPage) + public async Task Paginate(string[] projects, string[] environments, string[] tenants, Func, bool> getNextPage, CancellationToken token = default) { - await Client.Paginate(await Repository.Link("Deployments").ConfigureAwait(false), new { projects = projects ?? new string[0], environments = environments ?? new string[0], tenants = tenants ?? new string[0] }, getNextPage).ConfigureAwait(false); + await Client.Paginate(await Repository.Link("Deployments").ConfigureAwait(false), new { projects = projects ?? new string[0], environments = environments ?? new string[0], tenants = tenants ?? new string[0] }, getNextPage, token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/EnvironmentRepository.cs b/source/Octopus.Client/Repositories/Async/EnvironmentRepository.cs index 3c47696b9..5392a7288 100644 --- a/source/Octopus.Client/Repositories/Async/EnvironmentRepository.cs +++ b/source/Octopus.Client/Repositories/Async/EnvironmentRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -17,7 +18,8 @@ Task> GetMachines(EnvironmentResource environment, string healthStatuses = null, string commStyles = null, string tenantIds = null, - string tenantTags = null); + string tenantTags = null, + CancellationToken token = default); Task Summary( string ids = null, string partialName = null, @@ -28,11 +30,12 @@ Task Summary( string commStyles = null, string tenantIds = null, string tenantTags = null, - bool? hideEmptyEnvironments = false); - Task Sort(string[] environmentIdsInOrder); - Task CreateOrModify(string name); - Task CreateOrModify(string name, string description); - Task CreateOrModify(string name, string description, bool allowDynamicInfrastructure); + bool? hideEmptyEnvironments = false, + CancellationToken token = default); + Task Sort(string[] environmentIdsInOrder, CancellationToken token = default); + Task CreateOrModify(string name, CancellationToken token = default); + Task CreateOrModify(string name, string description, CancellationToken token = default); + Task CreateOrModify(string name, string description, bool allowDynamicInfrastructure, CancellationToken token = default); } class EnvironmentRepository : BasicRepository, IEnvironmentRepository @@ -51,7 +54,8 @@ public async Task> GetMachines(EnvironmentResource environ string healthStatuses = null, string commStyles = null, string tenantIds = null, - string tenantTags = null) + string tenantTags = null, + CancellationToken token = default) { var resources = new List(); @@ -69,7 +73,7 @@ public async Task> GetMachines(EnvironmentResource environ { resources.AddRange(page.Items); return true; - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); return resources; } @@ -84,7 +88,8 @@ public async Task Summary( string commStyles = null, string tenantIds = null, string tenantTags = null, - bool? hideEmptyEnvironments = false) + bool? hideEmptyEnvironments = false, + CancellationToken token = default) { return await Client.Get(await Repository.Link("EnvironmentsSummary").ConfigureAwait(false), new { @@ -98,27 +103,27 @@ public async Task Summary( tenantIds, tenantTags, hideEmptyEnvironments, - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); } - public async Task Sort(string[] environmentIdsInOrder) + public async Task Sort(string[] environmentIdsInOrder, CancellationToken token = default) { - await Client.Put(await Repository.Link("EnvironmentSortOrder").ConfigureAwait(false), environmentIdsInOrder).ConfigureAwait(false); + await Client.Put(await Repository.Link("EnvironmentSortOrder").ConfigureAwait(false), environmentIdsInOrder, token: token).ConfigureAwait(false); } - public Task CreateOrModify(string name) + public Task CreateOrModify(string name, CancellationToken token = default) { - return new EnvironmentEditor(this).CreateOrModify(name); + return new EnvironmentEditor(this).CreateOrModify(name, token); } - public Task CreateOrModify(string name, string description) + public Task CreateOrModify(string name, string description, CancellationToken token = default) { - return new EnvironmentEditor(this).CreateOrModify(name, description); + return new EnvironmentEditor(this).CreateOrModify(name, description, token: token); } - public Task CreateOrModify(string name, string description, bool allowDynamicInfrastructure) + public Task CreateOrModify(string name, string description, bool allowDynamicInfrastructure, CancellationToken token = default) { - return new EnvironmentEditor(this).CreateOrModify(name, description, allowDynamicInfrastructure); + return new EnvironmentEditor(this).CreateOrModify(name, description, allowDynamicInfrastructure, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/EventRepository.cs b/source/Octopus.Client/Repositories/Async/EventRepository.cs index 92bac0add..56922acf5 100644 --- a/source/Octopus.Client/Repositories/Async/EventRepository.cs +++ b/source/Octopus.Client/Repositories/Async/EventRepository.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Util; @@ -13,7 +14,8 @@ public interface IEventRepository : IGet, ICanExtendSpaceContext< Task> List(int skip = 0, string filterByUserId = null, string regardingDocumentId = null, - bool includeInternalEvents = false); + bool includeInternalEvents = false, + CancellationToken token = default); /// /// @@ -38,6 +40,7 @@ Task> List(int skip = 0, /// /// /// + /// /// Task> List(int skip = 0, int? take = null, @@ -58,12 +61,13 @@ Task> List(int skip = 0, long? toAutoId = null, string documentTypes = null, string eventAgents = null, - string projectGroups = null); + string projectGroups = null, + CancellationToken token = default); - Task> GetDocumentTypes(); - Task> GetAgents(); - Task> GetCategories(); - Task> GetGroups(); + Task> GetDocumentTypes(CancellationToken token = default); + Task> GetAgents(CancellationToken token = default); + Task> GetCategories(CancellationToken token = default); + Task> GetGroups(CancellationToken token = default); } class EventRepository : MixedScopeBaseRepository, IEventRepository @@ -82,7 +86,8 @@ public EventRepository(IOctopusAsyncRepository repository) public async Task> List(int skip = 0, string filterByUserId = null, string regardingDocumentId = null, - bool includeInternalEvents = false) + bool includeInternalEvents = false, + CancellationToken token = default) { return await Client.List(await Repository.Link("Events").ConfigureAwait(false), ParameterHelper.CombineParameters(GetAdditionalQueryParameters(), new { @@ -90,7 +95,7 @@ public async Task> List(int skip = 0, user = filterByUserId, regarding = regardingDocumentId, @internal = includeInternalEvents.ToString() - })).ConfigureAwait(false); + }), token).ConfigureAwait(false); } public async Task> List(int skip = 0, @@ -112,7 +117,8 @@ public async Task> List(int skip = 0, long? toAutoId = null, string documentTypes = null, string eventAgents = null, - string projectGroups = null) + string projectGroups = null, + CancellationToken token = default) { var parameters = ParameterHelper.CombineParameters(GetAdditionalQueryParameters(), new { @@ -138,31 +144,31 @@ public async Task> List(int skip = 0, projectGroups, }); - return await Client.List(await Repository.Link("Events").ConfigureAwait(false), parameters).ConfigureAwait(false); + return await Client.List(await Repository.Link("Events").ConfigureAwait(false), parameters, token).ConfigureAwait(false); } - public async Task> GetDocumentTypes() + public async Task> GetDocumentTypes(CancellationToken token = default) { var link = await Repository.Link("EventDocumentTypes").ConfigureAwait(false); - return await Client.Get>(link).ConfigureAwait(false); + return await Client.Get>(link, token: token).ConfigureAwait(false); } - public async Task> GetAgents() + public async Task> GetAgents(CancellationToken token = default) { var link = await Repository.Link("EventAgents").ConfigureAwait(false); - return await Client.Get>(link).ConfigureAwait(false); + return await Client.Get>(link, token: token).ConfigureAwait(false); } - public async Task> GetCategories() + public async Task> GetCategories(CancellationToken token = default) { var link = await Repository.Link("EventCategories").ConfigureAwait(false); - return await Client.Get>(link).ConfigureAwait(false); + return await Client.Get>(link, token: token).ConfigureAwait(false); } - public async Task> GetGroups() + public async Task> GetGroups(CancellationToken token = default) { var link = await Repository.Link("EventGroups").ConfigureAwait(false); - return await Client.Get>(link).ConfigureAwait(false); + return await Client.Get>(link, token: token).ConfigureAwait(false); } public IEventRepository UsingContext(SpaceContext spaceContext) diff --git a/source/Octopus.Client/Repositories/Async/FeaturesConfigurationRepository.cs b/source/Octopus.Client/Repositories/Async/FeaturesConfigurationRepository.cs index dc47f8261..bf2c4eb62 100644 --- a/source/Octopus.Client/Repositories/Async/FeaturesConfigurationRepository.cs +++ b/source/Octopus.Client/Repositories/Async/FeaturesConfigurationRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,8 +7,8 @@ namespace Octopus.Client.Repositories.Async { public interface IFeaturesConfigurationRepository { - Task GetFeaturesConfiguration(); - Task ModifyFeaturesConfiguration(FeaturesConfigurationResource resource); + Task GetFeaturesConfiguration(CancellationToken token = default); + Task ModifyFeaturesConfiguration(FeaturesConfigurationResource resource, CancellationToken token = default); } class FeaturesConfigurationRepository : IFeaturesConfigurationRepository @@ -19,14 +20,14 @@ public FeaturesConfigurationRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public async Task GetFeaturesConfiguration() + public async Task GetFeaturesConfiguration(CancellationToken token = default) { - return await repository.Client.Get(await repository.Link("FeaturesConfiguration").ConfigureAwait(false)).ConfigureAwait(false); + return await repository.Client.Get(await repository.Link("FeaturesConfiguration").ConfigureAwait(false), token: token).ConfigureAwait(false); } - public async Task ModifyFeaturesConfiguration(FeaturesConfigurationResource resource) + public async Task ModifyFeaturesConfiguration(FeaturesConfigurationResource resource, CancellationToken token = default) { - return await repository.Client.Update(await repository.Link("FeaturesConfiguration").ConfigureAwait(false), resource).ConfigureAwait(false); + return await repository.Client.Update(await repository.Link("FeaturesConfiguration").ConfigureAwait(false), resource, token: token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/FeedRepository.cs b/source/Octopus.Client/Repositories/Async/FeedRepository.cs index ba550ce72..777b4d6d7 100644 --- a/source/Octopus.Client/Repositories/Async/FeedRepository.cs +++ b/source/Octopus.Client/Repositories/Async/FeedRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -7,7 +8,7 @@ namespace Octopus.Client.Repositories.Async { public interface IFeedRepository : ICreate, IModify, IDelete, IGet, IFindByName { - Task> GetVersions(FeedResource feed, string[] packageIds); + Task> GetVersions(FeedResource feed, string[] packageIds, CancellationToken token = default); } class FeedRepository : BasicRepository, IFeedRepository @@ -16,9 +17,9 @@ public FeedRepository(IOctopusAsyncRepository repository) : base(repository, "Fe { } - public Task> GetVersions(FeedResource feed, string[] packageIds) + public Task> GetVersions(FeedResource feed, string[] packageIds, CancellationToken token = default) { - return Client.Get>(feed.Link("VersionsTemplate"), new { packageIds = packageIds }); + return Client.Get>(feed.Link("VersionsTemplate"), new { packageIds = packageIds }, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/ICreate.cs b/source/Octopus.Client/Repositories/Async/ICreate.cs index 62d478f03..6029cc8ca 100644 --- a/source/Octopus.Client/Repositories/Async/ICreate.cs +++ b/source/Octopus.Client/Repositories/Async/ICreate.cs @@ -1,10 +1,11 @@ using System; +using System.Threading; using System.Threading.Tasks; namespace Octopus.Client.Repositories.Async { public interface ICreate { - Task Create(TResource resource, object pathParameters = null); + Task Create(TResource resource, object pathParameters = null, CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/IDelete.cs b/source/Octopus.Client/Repositories/Async/IDelete.cs index e33ac5f16..dc36f975e 100644 --- a/source/Octopus.Client/Repositories/Async/IDelete.cs +++ b/source/Octopus.Client/Repositories/Async/IDelete.cs @@ -1,10 +1,11 @@ using System; +using System.Threading; using System.Threading.Tasks; namespace Octopus.Client.Repositories.Async { public interface IDelete { - Task Delete(TResource resource); + Task Delete(TResource resource, CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/IFindByName.cs b/source/Octopus.Client/Repositories/Async/IFindByName.cs index 3acd2fd9c..6341dc72d 100644 --- a/source/Octopus.Client/Repositories/Async/IFindByName.cs +++ b/source/Octopus.Client/Repositories/Async/IFindByName.cs @@ -1,12 +1,13 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; namespace Octopus.Client.Repositories.Async { public interface IFindByName : IPaginate { - Task FindByName(string name, string path = null, object pathParameters = null); - Task> FindByNames(IEnumerable names, string path = null, object pathParameters = null); + Task FindByName(string name, string path = null, object pathParameters = null, CancellationToken token = default); + Task> FindByNames(IEnumerable names, string path = null, object pathParameters = null, CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/IGet.cs b/source/Octopus.Client/Repositories/Async/IGet.cs index aed0af3d5..2098f4232 100644 --- a/source/Octopus.Client/Repositories/Async/IGet.cs +++ b/source/Octopus.Client/Repositories/Async/IGet.cs @@ -1,13 +1,14 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; namespace Octopus.Client.Repositories.Async { public interface IGet { - Task Get(string idOrHref); - Task> Get(params string[] ids); - Task Refresh(TResource resource); + Task Get(string idOrHref, CancellationToken token = default); + Task> Get(CancellationToken token = default, params string[] ids); + Task Refresh(TResource resource, CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/IGetAll.cs b/source/Octopus.Client/Repositories/Async/IGetAll.cs index d0ff6c20b..23050c039 100644 --- a/source/Octopus.Client/Repositories/Async/IGetAll.cs +++ b/source/Octopus.Client/Repositories/Async/IGetAll.cs @@ -1,11 +1,12 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; namespace Octopus.Client.Repositories.Async { public interface IGetAll { - Task> GetAll(); + Task> GetAll(CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/IModify.cs b/source/Octopus.Client/Repositories/Async/IModify.cs index 697e39372..d464d81ec 100644 --- a/source/Octopus.Client/Repositories/Async/IModify.cs +++ b/source/Octopus.Client/Repositories/Async/IModify.cs @@ -1,10 +1,11 @@ using System; +using System.Threading; using System.Threading.Tasks; namespace Octopus.Client.Repositories.Async { public interface IModify { - Task Modify(TResource resource); + Task Modify(TResource resource, CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/IPaginate.cs b/source/Octopus.Client/Repositories/Async/IPaginate.cs index 1165023fa..edbbbe190 100644 --- a/source/Octopus.Client/Repositories/Async/IPaginate.cs +++ b/source/Octopus.Client/Repositories/Async/IPaginate.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -7,9 +8,9 @@ namespace Octopus.Client.Repositories.Async { public interface IPaginate { - Task Paginate(Func, bool> getNextPage, string path = null, object pathParameters = null); - Task FindOne(Func search, string path = null, object pathParameters = null); - Task> FindMany(Func search, string path = null, object pathParameters = null); - Task> FindAll(string path = null, object pathParameters = null); + Task Paginate(Func, bool> getNextPage, string path = null, object pathParameters = null, CancellationToken token = default); + Task FindOne(Func search, string path = null, object pathParameters = null, CancellationToken token = default); + Task> FindMany(Func search, string path = null, object pathParameters = null, CancellationToken token = default); + Task> FindAll(string path = null, object pathParameters = null, CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/InterruptionRepository.cs b/source/Octopus.Client/Repositories/Async/InterruptionRepository.cs index 921e95a14..9dcb69d93 100644 --- a/source/Octopus.Client/Repositories/Async/InterruptionRepository.cs +++ b/source/Octopus.Client/Repositories/Async/InterruptionRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -13,11 +14,12 @@ public interface IInterruptionRepository : IGet /// Number of records to take (First supported in Server 3.14.15) /// /// + /// /// - Task> List(int skip = 0, int? take = null, bool pendingOnly = false, string regardingDocumentId = null); - Task Submit(InterruptionResource interruption); - Task TakeResponsibility(InterruptionResource interruption); - Task GetResponsibleUser(InterruptionResource interruption); + Task> List(int skip = 0, int? take = null, bool pendingOnly = false, string regardingDocumentId = null, CancellationToken token = default); + Task Submit(InterruptionResource interruption, CancellationToken token = default); + Task TakeResponsibility(InterruptionResource interruption, CancellationToken token = default); + Task GetResponsibleUser(InterruptionResource interruption, CancellationToken token = default); } class InterruptionRepository : BasicRepository, IInterruptionRepository @@ -27,24 +29,24 @@ public InterruptionRepository(IOctopusAsyncRepository repository) { } - public async Task> List(int skip = 0, int? take = null, bool pendingOnly = false, string regardingDocumentId = null) + public async Task> List(int skip = 0, int? take = null, bool pendingOnly = false, string regardingDocumentId = null, CancellationToken token = default) { - return await Client.List(await Repository.Link("Interruptions").ConfigureAwait(false), new { skip, take, pendingOnly, regarding = regardingDocumentId }).ConfigureAwait(false); + return await Client.List(await Repository.Link("Interruptions").ConfigureAwait(false), new { skip, take, pendingOnly, regarding = regardingDocumentId }, token).ConfigureAwait(false); } - public Task Submit(InterruptionResource interruption) + public Task Submit(InterruptionResource interruption, CancellationToken token = default) { - return Client.Post(interruption.Link("Submit"), interruption.Form.Values); + return Client.Post(interruption.Link("Submit"), interruption.Form.Values, token: token); } - public Task TakeResponsibility(InterruptionResource interruption) + public Task TakeResponsibility(InterruptionResource interruption, CancellationToken token = default) { - return Client.Put(interruption.Link("Responsible"), (InterruptionResource)null); + return Client.Put(interruption.Link("Responsible"), (InterruptionResource)null, token: token); } - public Task GetResponsibleUser(InterruptionResource interruption) + public Task GetResponsibleUser(InterruptionResource interruption, CancellationToken token = default) { - return Client.Get(interruption.Link("Responsible")); + return Client.Get(interruption.Link("Responsible"), token: token); } } } diff --git a/source/Octopus.Client/Repositories/Async/LibraryVariableSetRepository.cs b/source/Octopus.Client/Repositories/Async/LibraryVariableSetRepository.cs index e06fdb145..9222e684d 100644 --- a/source/Octopus.Client/Repositories/Async/LibraryVariableSetRepository.cs +++ b/source/Octopus.Client/Repositories/Async/LibraryVariableSetRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -12,8 +13,8 @@ public interface ILibraryVariableSetRepository : IDelete, IFindByName { - Task CreateOrModify(string name); - Task CreateOrModify(string name, string description); + Task CreateOrModify(string name, CancellationToken token = default); + Task CreateOrModify(string name, string description, CancellationToken token = default); } class LibraryVariableSetRepository : BasicRepository, ILibraryVariableSetRepository @@ -23,14 +24,14 @@ public LibraryVariableSetRepository(IOctopusAsyncRepository repository) { } - public Task CreateOrModify(string name) + public Task CreateOrModify(string name, CancellationToken token = default) { - return new LibraryVariableSetEditor(this, new VariableSetRepository(Repository)).CreateOrModify(name); + return new LibraryVariableSetEditor(this, new VariableSetRepository(Repository)).CreateOrModify(name, token); } - public Task CreateOrModify(string name, string description) + public Task CreateOrModify(string name, string description, CancellationToken token = default) { - return new LibraryVariableSetEditor(this, new VariableSetRepository(Repository)).CreateOrModify(name, description); + return new LibraryVariableSetEditor(this, new VariableSetRepository(Repository)).CreateOrModify(name, description, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/LicensesRepository.cs b/source/Octopus.Client/Repositories/Async/LicensesRepository.cs index 1957167c7..400cf29bd 100644 --- a/source/Octopus.Client/Repositories/Async/LicensesRepository.cs +++ b/source/Octopus.Client/Repositories/Async/LicensesRepository.cs @@ -1,3 +1,4 @@ +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -5,9 +6,9 @@ namespace Octopus.Client.Repositories.Async { public interface ILicensesRepository { - Task GetCurrent(); - Task UpdateCurrent(LicenseResource resource); - Task GetStatus(); + Task GetCurrent(CancellationToken token = default); + Task UpdateCurrent(LicenseResource resource, CancellationToken token = default); + Task GetStatus(CancellationToken token = default); } class LicensesRepository : BasicRepository, ILicensesRepository @@ -17,14 +18,14 @@ public LicensesRepository(IOctopusAsyncRepository repository) { } - public async Task GetCurrent() - => await Client.Get(await Repository.Link(CollectionLinkName)); + public async Task GetCurrent(CancellationToken token = default) + => await Client.Get(await Repository.Link(CollectionLinkName), token: token); - public async Task UpdateCurrent(LicenseResource resource) - => await Client.Update(await Repository.Link(CollectionLinkName), resource); + public async Task UpdateCurrent(LicenseResource resource, CancellationToken token = default) + => await Client.Update(await Repository.Link(CollectionLinkName), resource, token: token); - public async Task GetStatus() - => await Client.Get(await Repository.Link("CurrentLicenseStatus")); + public async Task GetStatus(CancellationToken token = default) + => await Client.Get(await Repository.Link("CurrentLicenseStatus"), token: token); } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/LifecyclesRepository.cs b/source/Octopus.Client/Repositories/Async/LifecyclesRepository.cs index 243e2fd57..52bc78e96 100644 --- a/source/Octopus.Client/Repositories/Async/LifecyclesRepository.cs +++ b/source/Octopus.Client/Repositories/Async/LifecyclesRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -7,8 +8,8 @@ namespace Octopus.Client.Repositories.Async { public interface ILifecyclesRepository : IGet, ICreate, IModify, IDelete, IFindByName { - Task CreateOrModify(string name); - Task CreateOrModify(string name, string description); + Task CreateOrModify(string name, CancellationToken token = default); + Task CreateOrModify(string name, string description, CancellationToken token = default); } class LifecyclesRepository : BasicRepository, ILifecyclesRepository @@ -18,14 +19,14 @@ public LifecyclesRepository(IOctopusAsyncRepository repository) { } - public Task CreateOrModify(string name) + public Task CreateOrModify(string name, CancellationToken token = default) { - return new LifecycleEditor(this).CreateOrModify(name); + return new LifecycleEditor(this).CreateOrModify(name, token); } - public Task CreateOrModify(string name, string description) + public Task CreateOrModify(string name, string description, CancellationToken token = default) { - return new LifecycleEditor(this).CreateOrModify(name, description); + return new LifecycleEditor(this).CreateOrModify(name, description, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/MachinePolicyRepository.cs b/source/Octopus.Client/Repositories/Async/MachinePolicyRepository.cs index d158b1a1d..be9688238 100644 --- a/source/Octopus.Client/Repositories/Async/MachinePolicyRepository.cs +++ b/source/Octopus.Client/Repositories/Async/MachinePolicyRepository.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,8 +7,8 @@ namespace Octopus.Client.Repositories.Async { public interface IMachinePolicyRepository : IFindByName, ICreate, IModify, IGet, IDelete { - Task> GetMachines(MachinePolicyResource machinePolicy); - Task GetTemplate(); + Task> GetMachines(MachinePolicyResource machinePolicy, CancellationToken token = default); + Task GetTemplate(CancellationToken token = default); } @@ -17,7 +18,7 @@ public MachinePolicyRepository(IOctopusAsyncRepository repository) : base(reposi { } - public async Task> GetMachines(MachinePolicyResource machinePolicy) + public async Task> GetMachines(MachinePolicyResource machinePolicy, CancellationToken token = default) { var resources = new List(); @@ -25,15 +26,15 @@ public async Task> GetMachines(MachinePolicyResource machi { resources.AddRange(page.Items); return true; - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); return resources; } - public async Task GetTemplate() + public async Task GetTemplate(CancellationToken token = default) { var link = await Repository.Link("MachinePolicyTemplate").ConfigureAwait(false); - return await Client.Get(link).ConfigureAwait(false); + return await Client.Get(link, token: token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/MachineRepository.cs b/source/Octopus.Client/Repositories/Async/MachineRepository.cs index fdb787f05..aa51aa87b 100644 --- a/source/Octopus.Client/Repositories/Async/MachineRepository.cs +++ b/source/Octopus.Client/Repositories/Async/MachineRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -9,12 +10,12 @@ namespace Octopus.Client.Repositories.Async { public interface IMachineRepository : IFindByName, IGet, ICreate, IModify, IDelete { - Task Discover(string host, int port = 10933, DiscoverableEndpointType? discoverableEndpointType = null); - Task Discover(DiscoverMachineOptions options); - Task GetConnectionStatus(MachineResource machine); - Task> FindByThumbprint(string thumbprint); - Task> GetTasks(MachineResource machine); - Task> GetTasks(MachineResource machine, object pathParameters); + Task Discover(string host, int port = 10933, DiscoverableEndpointType? discoverableEndpointType = null, CancellationToken token = default); + Task Discover(DiscoverMachineOptions options, CancellationToken token = default); + Task GetConnectionStatus(MachineResource machine, CancellationToken token = default); + Task> FindByThumbprint(string thumbprint, CancellationToken token = default); + Task> GetTasks(MachineResource machine, CancellationToken token = default); + Task> GetTasks(MachineResource machine, object pathParameters, CancellationToken token = default); Task CreateOrModify( string name, @@ -23,13 +24,15 @@ Task CreateOrModify( string[] roles, TenantResource[] tenants, TagResource[] tenantTags, - TenantedDeploymentMode? tenantedDeploymentParticipation); + TenantedDeploymentMode? tenantedDeploymentParticipation, + CancellationToken token = default); Task CreateOrModify( string name, EndpointResource endpoint, EnvironmentResource[] environments, - string[] roles); + string[] roles, + CancellationToken token = default); Task> List(int skip = 0, int? take = null, @@ -42,7 +45,8 @@ Task> List(int skip = 0, string commStyles = null, string tenantIds = null, string tenantTags = null, - string environmentIds = null); + string environmentIds = null, + CancellationToken token = default); } class MachineRepository : BasicRepository, IMachineRepository @@ -51,40 +55,41 @@ public MachineRepository(IOctopusAsyncRepository repository) : base(repository, { } - public Task Discover(string host, int port = 10933, DiscoverableEndpointType? type = null) + public Task Discover(string host, int port = 10933, DiscoverableEndpointType? type = null, CancellationToken token = default) => Discover(new DiscoverMachineOptions(host) { Port = port, Type = type - }); + }, token); - public async Task Discover(DiscoverMachineOptions options) + public async Task Discover(DiscoverMachineOptions options, CancellationToken token = default) => await Client.Get(await Repository.Link("DiscoverMachine").ConfigureAwait(false), new { host = options.Host, port = options.Port, type = options.Type, proxyId = options.Proxy?.Id - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); - public Task GetConnectionStatus(MachineResource machine) + public Task GetConnectionStatus(MachineResource machine, CancellationToken token = default) { if (machine == null) throw new ArgumentNullException("machine"); - return Client.Get(machine.Link("Connection")); + return Client.Get(machine.Link("Connection"), token: token); } - public async Task> FindByThumbprint(string thumbprint) + public async Task> FindByThumbprint(string thumbprint, CancellationToken token = default) { if (thumbprint == null) throw new ArgumentNullException("thumbprint"); - return await Client.Get>(await Repository.Link("machines").ConfigureAwait(false), new { id = IdValueConstant.IdAll, thumbprint }).ConfigureAwait(false); + return await Client.Get>(await Repository.Link("machines").ConfigureAwait(false), new { id = IdValueConstant.IdAll, thumbprint }, token).ConfigureAwait(false); } /// /// Gets all tasks involving the specified machine /// /// + /// /// - public Task> GetTasks(MachineResource machine) => GetTasks(machine, new { skip = 0 }); + public Task> GetTasks(MachineResource machine, CancellationToken token = default) => GetTasks(machine, new { skip = 0 }, token); /// /// Gets all tasks associated with this machine @@ -93,13 +98,14 @@ public async Task> FindByThumbprint(string thumbprint) /// /// /// + /// /// - public async Task> GetTasks(MachineResource machine, object pathParameters) + public async Task> GetTasks(MachineResource machine, object pathParameters, CancellationToken token = default) { if (machine == null) throw new ArgumentNullException(nameof(machine)); - return await Client.ListAll(machine.Link("TasksTemplate"), pathParameters).ConfigureAwait(false); + return await Client.ListAll(machine.Link("TasksTemplate"), pathParameters, token).ConfigureAwait(false); } public Task CreateOrModify( @@ -109,18 +115,20 @@ public Task CreateOrModify( string[] roles, TenantResource[] tenants, TagResource[] tenantTags, - TenantedDeploymentMode? tenantedDeploymentParticipation) + TenantedDeploymentMode? tenantedDeploymentParticipation, + CancellationToken token = default) { - return new MachineEditor(this).CreateOrModify(name, endpoint, environments, roles, tenants, tenantTags, tenantedDeploymentParticipation); + return new MachineEditor(this).CreateOrModify(name, endpoint, environments, roles, tenants, tenantTags, tenantedDeploymentParticipation, token); } public Task CreateOrModify( string name, EndpointResource endpoint, EnvironmentResource[] environments, - string[] roles) + string[] roles, + CancellationToken token = default) { - return new MachineEditor(this).CreateOrModify(name, endpoint, environments, roles); + return new MachineEditor(this).CreateOrModify(name, endpoint, environments, roles, token); } public async Task> List(int skip = 0, @@ -134,7 +142,8 @@ public async Task> List(int skip = 0, string commStyles = null, string tenantIds = null, string tenantTags = null, - string environmentIds = null) + string environmentIds = null, + CancellationToken token = default) { return await Client.List(await Repository.Link("Machines").ConfigureAwait(false), new { @@ -150,7 +159,7 @@ public async Task> List(int skip = 0, tenantIds, tenantTags, environmentIds, - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/MachineRoleRepository.cs b/source/Octopus.Client/Repositories/Async/MachineRoleRepository.cs index ed143549c..4df01bf7e 100644 --- a/source/Octopus.Client/Repositories/Async/MachineRoleRepository.cs +++ b/source/Octopus.Client/Repositories/Async/MachineRoleRepository.cs @@ -1,13 +1,14 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using System.Threading.Tasks; namespace Octopus.Client.Repositories.Async { public interface IMachineRoleRepository { - Task> GetAllRoleNames(); + Task> GetAllRoleNames(CancellationToken token = default); } class MachineRoleRepository : IMachineRoleRepository @@ -19,9 +20,9 @@ public MachineRoleRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public async Task> GetAllRoleNames() + public async Task> GetAllRoleNames(CancellationToken token = default) { - var result = await repository.Client.Get(await repository.Link("MachineRoles").ConfigureAwait(false)).ConfigureAwait(false); + var result = await repository.Client.Get(await repository.Link("MachineRoles").ConfigureAwait(false), token: token).ConfigureAwait(false); return result.ToList(); } } diff --git a/source/Octopus.Client/Repositories/Async/MigrationRepository.cs b/source/Octopus.Client/Repositories/Async/MigrationRepository.cs index 3ea5a3b8e..5974c7882 100644 --- a/source/Octopus.Client/Repositories/Async/MigrationRepository.cs +++ b/source/Octopus.Client/Repositories/Async/MigrationRepository.cs @@ -1,12 +1,13 @@ -using System.Threading.Tasks; +using System.Threading; +using System.Threading.Tasks; using Octopus.Client.Model.Migrations; namespace Octopus.Client.Repositories.Async { public interface IMigrationRepository { - Task PartialExport(MigrationPartialExportResource resource); - Task Import(MigrationImportResource resource); + Task PartialExport(MigrationPartialExportResource resource, CancellationToken token = default); + Task Import(MigrationImportResource resource, CancellationToken token = default); } class MigrationRepository : IMigrationRepository @@ -18,14 +19,14 @@ public MigrationRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public async Task PartialExport(MigrationPartialExportResource resource) + public async Task PartialExport(MigrationPartialExportResource resource, CancellationToken token = default) { - return await repository.Client.Post(await repository.Link("MigrationsPartialExport").ConfigureAwait(false), resource).ConfigureAwait(false); + return await repository.Client.Post(await repository.Link("MigrationsPartialExport").ConfigureAwait(false), resource, token: token).ConfigureAwait(false); } - public async Task Import(MigrationImportResource resource) + public async Task Import(MigrationImportResource resource, CancellationToken token = default) { - return await repository.Client.Post(await repository.Link("MigrationsImport").ConfigureAwait(false), resource).ConfigureAwait(false); + return await repository.Client.Post(await repository.Link("MigrationsImport").ConfigureAwait(false), resource, token: token).ConfigureAwait(false); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/OctopusServerNodeRepository.cs b/source/Octopus.Client/Repositories/Async/OctopusServerNodeRepository.cs index 4be1e70d4..4e8ef6ea1 100644 --- a/source/Octopus.Client/Repositories/Async/OctopusServerNodeRepository.cs +++ b/source/Octopus.Client/Repositories/Async/OctopusServerNodeRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -7,8 +8,8 @@ namespace Octopus.Client.Repositories.Async { public interface IOctopusServerNodeRepository : IModify, IDelete, IGet, IFindByName { - Task Details(OctopusServerNodeResource node); - Task Summary(); + Task Details(OctopusServerNodeResource node, CancellationToken token = default); + Task Summary(CancellationToken token = default); } class OctopusServerNodeRepository : BasicRepository, IOctopusServerNodeRepository @@ -21,14 +22,14 @@ public OctopusServerNodeRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public async Task Details(OctopusServerNodeResource node) + public async Task Details(OctopusServerNodeResource node, CancellationToken token = default) { - return await repository.Client.Get(node.Link("Details")); + return await repository.Client.Get(node.Link("Details"), token: token); } - public async Task Summary() + public async Task Summary(CancellationToken token = default) { - return await repository.Client.Get(await repository.Link("OctopusServerClusterSummary").ConfigureAwait(false)).ConfigureAwait(false); + return await repository.Client.Get(await repository.Link("OctopusServerClusterSummary").ConfigureAwait(false), token: token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/PackageMetadataRepository.cs b/source/Octopus.Client/Repositories/Async/PackageMetadataRepository.cs index 160861aac..6623c7013 100644 --- a/source/Octopus.Client/Repositories/Async/PackageMetadataRepository.cs +++ b/source/Octopus.Client/Repositories/Async/PackageMetadataRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Exceptions; using Octopus.Client.Logging; @@ -17,18 +18,18 @@ public PackageMetadataRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public async Task Get(string id) + public async Task Get(string id, CancellationToken token = default) { var link = await repository.Link("PackageMetadata"); return await repository.Client.Get(link, new { id }); } - public Task Push(string packageId, string version, OctopusPackageMetadata octopusMetadata, bool replaceExisting) + public Task Push(string packageId, string version, OctopusPackageMetadata octopusMetadata, bool replaceExisting, CancellationToken token = default) { - return Push(packageId, version, octopusMetadata, replaceExisting ? OverwriteMode.OverwriteExisting : OverwriteMode.FailIfExists); + return Push(packageId, version, octopusMetadata, replaceExisting ? OverwriteMode.OverwriteExisting : OverwriteMode.FailIfExists, token); } - public async Task Push(string packageId, string version, OctopusPackageMetadata octopusMetadata, OverwriteMode overwriteMode) + public async Task Push(string packageId, string version, OctopusPackageMetadata octopusMetadata, OverwriteMode overwriteMode, CancellationToken token = default) { if (string.IsNullOrWhiteSpace(packageId)) throw new ArgumentException("A package Id must be supplied", nameof(packageId)); @@ -59,20 +60,20 @@ public async Task Push(string packageId, s // if the link contains overwriteMode then we're connected to a new server, if not use the old `replace` parameter if (link.Contains(OverwriteModeLink.Link)) { - return await repository.Client.Post(link, resource, new { overwriteMode = overwriteMode }); + return await repository.Client.Post(link, resource, new { overwriteMode = overwriteMode }, token); } else { - return await repository.Client.Post(link, resource, new { replace = overwriteMode.ConvertToLegacyReplaceFlag(Logger) }); + return await repository.Client.Post(link, resource, new { replace = overwriteMode.ConvertToLegacyReplaceFlag(Logger) }, token); } } } public interface IPackageMetadataRepository { - Task Get(string id); - Task Push(string packageId, string version, OctopusPackageMetadata octopusMetadata, OverwriteMode overwriteMode); + Task Get(string id, CancellationToken token = default); + Task Push(string packageId, string version, OctopusPackageMetadata octopusMetadata, OverwriteMode overwriteMode, CancellationToken token = default); [Obsolete] - Task Push(string packageId, string version, OctopusPackageMetadata octopusMetadata, bool replaceExisting); + Task Push(string packageId, string version, OctopusPackageMetadata octopusMetadata, bool replaceExisting, CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/PerformanceConfigurationRepository.cs b/source/Octopus.Client/Repositories/Async/PerformanceConfigurationRepository.cs index ed74dd044..e6fdc015f 100644 --- a/source/Octopus.Client/Repositories/Async/PerformanceConfigurationRepository.cs +++ b/source/Octopus.Client/Repositories/Async/PerformanceConfigurationRepository.cs @@ -1,12 +1,13 @@ -using System.Threading.Tasks; +using System.Threading; +using System.Threading.Tasks; using Octopus.Client.Model; namespace Octopus.Client.Repositories.Async { public interface IPerformanceConfigurationRepository { - Task Get(); - Task Modify(PerformanceConfigurationResource resource); + Task Get(CancellationToken token = default); + Task Modify(PerformanceConfigurationResource resource, CancellationToken token = default); } class PerformanceConfigurationRepository : IPerformanceConfigurationRepository @@ -18,14 +19,14 @@ public PerformanceConfigurationRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public async Task Get() + public async Task Get(CancellationToken token = default) { - return await repository.Client.Get(await repository.Link("PerformanceConfiguration").ConfigureAwait(false)).ConfigureAwait(false); + return await repository.Client.Get(await repository.Link("PerformanceConfiguration").ConfigureAwait(false), token: token).ConfigureAwait(false); } - public async Task Modify(PerformanceConfigurationResource resource) + public async Task Modify(PerformanceConfigurationResource resource, CancellationToken token = default) { - return await repository.Client.Update(await repository.Link("PerformanceConfiguration").ConfigureAwait(false), resource).ConfigureAwait(false); + return await repository.Client.Update(await repository.Link("PerformanceConfiguration").ConfigureAwait(false), resource, token: token).ConfigureAwait(false); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/ProjectGroupRepository.cs b/source/Octopus.Client/Repositories/Async/ProjectGroupRepository.cs index 63cd73404..7e2d63bad 100644 --- a/source/Octopus.Client/Repositories/Async/ProjectGroupRepository.cs +++ b/source/Octopus.Client/Repositories/Async/ProjectGroupRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -8,9 +9,9 @@ namespace Octopus.Client.Repositories.Async { public interface IProjectGroupRepository : IFindByName, IGet, ICreate, IModify, IDelete, IGetAll { - Task> GetProjects(ProjectGroupResource projectGroup); - Task CreateOrModify(string name); - Task CreateOrModify(string name, string description); + Task> GetProjects(ProjectGroupResource projectGroup, CancellationToken token = default); + Task CreateOrModify(string name, CancellationToken token = default); + Task CreateOrModify(string name, string description, CancellationToken token = default); } class ProjectGroupRepository : BasicRepository, IProjectGroupRepository @@ -20,7 +21,7 @@ public ProjectGroupRepository(IOctopusAsyncRepository repository) { } - public async Task> GetProjects(ProjectGroupResource projectGroup) + public async Task> GetProjects(ProjectGroupResource projectGroup, CancellationToken token = default) { var resources = new List(); @@ -28,19 +29,19 @@ public async Task> GetProjects(ProjectGroupResource projec { resources.AddRange(page.Items); return true; - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); return resources; } - public Task CreateOrModify(string name) + public Task CreateOrModify(string name, CancellationToken token = default) { - return new ProjectGroupEditor(this).CreateOrModify(name); + return new ProjectGroupEditor(this).CreateOrModify(name, token); } - public Task CreateOrModify(string name, string description) + public Task CreateOrModify(string name, string description, CancellationToken token = default) { - return new ProjectGroupEditor(this).CreateOrModify(name, description); + return new ProjectGroupEditor(this).CreateOrModify(name, description, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/ProjectRepository.cs b/source/Octopus.Client/Repositories/Async/ProjectRepository.cs index 54bb65ec2..a8b5f89ef 100644 --- a/source/Octopus.Client/Repositories/Async/ProjectRepository.cs +++ b/source/Octopus.Client/Repositories/Async/ProjectRepository.cs @@ -4,28 +4,29 @@ using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; +using System.Threading; namespace Octopus.Client.Repositories.Async { public interface IProjectRepository : IFindByName, IGet, ICreate, IModify, IDelete, IGetAll { IProjectBetaRepository Beta(); - Task> GetReleases(ProjectResource project, int skip = 0, int? take = null, string searchByVersion = null); - Task> GetAllReleases(ProjectResource project); - Task GetReleaseByVersion(ProjectResource project, string version); - Task> GetChannels(ProjectResource project); - Task> GetAllChannels(ProjectResource project); - Task GetProgression(ProjectResource project); - Task> GetTriggers(ProjectResource project); - Task> GetAllTriggers(ProjectResource project); - Task SetLogo(ProjectResource project, string fileName, Stream contents); - Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle); - Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle, string description, string cloneId = null); - Task> GetRunbookSnapshots(ProjectResource project, int skip = 0, int? take = null, string searchByName = null); - Task> GetAllRunbookSnapshots(ProjectResource project); - Task GetRunbookSnapshotByName(ProjectResource project, string name); - Task> GetRunbooks(ProjectResource project, int skip = 0, int? take = null, string searchByName = null); - Task> GetAllRunbooks(ProjectResource project); + Task> GetReleases(ProjectResource project, int skip = 0, int? take = null, string searchByVersion = null, CancellationToken token = default); + Task> GetAllReleases(ProjectResource project, CancellationToken token = default); + Task GetReleaseByVersion(ProjectResource project, string version, CancellationToken token = default); + Task> GetChannels(ProjectResource project, CancellationToken token = default); + Task> GetAllChannels(ProjectResource project, CancellationToken token = default); + Task GetProgression(ProjectResource project, CancellationToken token = default); + Task> GetTriggers(ProjectResource project, CancellationToken token = default); + Task> GetAllTriggers(ProjectResource project, CancellationToken token = default); + Task SetLogo(ProjectResource project, string fileName, Stream contents, CancellationToken token = default); + Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle, CancellationToken token = default); + Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle, string description, string cloneId = null, CancellationToken token = default); + Task> GetRunbookSnapshots(ProjectResource project, int skip = 0, int? take = null, string searchByName = null, CancellationToken token = default); + Task> GetAllRunbookSnapshots(ProjectResource project, CancellationToken token = default); + Task GetRunbookSnapshotByName(ProjectResource project, string name, CancellationToken token = default); + Task> GetRunbooks(ProjectResource project, int skip = 0, int? take = null, string searchByName = null, CancellationToken token = default); + Task> GetAllRunbooks(ProjectResource project, CancellationToken token = default); } class ProjectRepository : BasicRepository, IProjectRepository @@ -43,91 +44,91 @@ public IProjectBetaRepository Beta() return beta; } - public Task> GetReleases(ProjectResource project, int skip = 0, int? take = null, string searchByVersion = null) + public Task> GetReleases(ProjectResource project, int skip = 0, int? take = null, string searchByVersion = null, CancellationToken token = default) { - return Client.List(project.Link("Releases"), new { skip, take, searchByVersion }); + return Client.List(project.Link("Releases"), new { skip, take, searchByVersion }, token); } - public Task> GetAllReleases(ProjectResource project) + public Task> GetAllReleases(ProjectResource project, CancellationToken token = default) { - return Client.ListAll(project.Link("Releases")); + return Client.ListAll(project.Link("Releases"), token: token); } - public Task GetReleaseByVersion(ProjectResource project, string version) + public Task GetReleaseByVersion(ProjectResource project, string version, CancellationToken token = default) { - return Client.Get(project.Link("Releases"), new { version }); + return Client.Get(project.Link("Releases"), new { version }, token); } - public Task> GetChannels(ProjectResource project) + public Task> GetChannels(ProjectResource project, CancellationToken token = default) { - return Client.List(project.Link("Channels")); + return Client.List(project.Link("Channels"), token: token); } - public Task> GetAllChannels(ProjectResource project) + public Task> GetAllChannels(ProjectResource project, CancellationToken token = default) { - return Client.ListAll(project.Link("Channels")); + return Client.ListAll(project.Link("Channels"), token: token); } - public Task GetProgression(ProjectResource project) + public Task GetProgression(ProjectResource project, CancellationToken token = default) { - return Client.Get(project.Link("Progression")); + return Client.Get(project.Link("Progression"), token: token); } - public Task> GetTriggers(ProjectResource project) + public Task> GetTriggers(ProjectResource project, CancellationToken token = default) { - return Client.List(project.Link("Triggers")); + return Client.List(project.Link("Triggers"), token: token); } - public Task> GetAllTriggers(ProjectResource project) + public Task> GetAllTriggers(ProjectResource project, CancellationToken token = default) { - return Client.ListAll(project.Link("Triggers")); + return Client.ListAll(project.Link("Triggers"), token: token); } - public Task SetLogo(ProjectResource project, string fileName, Stream contents) + public Task SetLogo(ProjectResource project, string fileName, Stream contents, CancellationToken token = default) { - return Client.Post(project.Link("Logo"), new FileUpload { Contents = contents, FileName = fileName }, false); + return Client.Post(project.Link("Logo"), new FileUpload { Contents = contents, FileName = fileName }, false, token); } - public Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle) + public Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle, CancellationToken token = default) { - return new ProjectEditor(this, new ChannelRepository(Repository), new DeploymentProcessRepository(Repository), new ProjectTriggerRepository(Repository), new VariableSetRepository(Repository)).CreateOrModify(name, projectGroup, lifecycle); + return new ProjectEditor(this, new ChannelRepository(Repository), new DeploymentProcessRepository(Repository), new ProjectTriggerRepository(Repository), new VariableSetRepository(Repository)).CreateOrModify(name, projectGroup, lifecycle, token); } - public Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle, string description, string cloneId = null) + public Task CreateOrModify(string name, ProjectGroupResource projectGroup, LifecycleResource lifecycle, string description, string cloneId = null, CancellationToken token = default) { - return new ProjectEditor(this, new ChannelRepository(Repository), new DeploymentProcessRepository(Repository), new ProjectTriggerRepository(Repository), new VariableSetRepository(Repository)).CreateOrModify(name, projectGroup, lifecycle, description, cloneId); + return new ProjectEditor(this, new ChannelRepository(Repository), new DeploymentProcessRepository(Repository), new ProjectTriggerRepository(Repository), new VariableSetRepository(Repository)).CreateOrModify(name, projectGroup, lifecycle, description, cloneId, token); } - public Task> GetRunbookSnapshots(ProjectResource project, int skip = 0, int? take = null, string searchByName = null) + public Task> GetRunbookSnapshots(ProjectResource project, int skip = 0, int? take = null, string searchByName = null, CancellationToken token = default) { - return Client.List(project.Link("RunbookSnapshots"), new { skip, take, searchByName }); + return Client.List(project.Link("RunbookSnapshots"), new { skip, take, searchByName }, token); } - public Task> GetAllRunbookSnapshots(ProjectResource project) + public Task> GetAllRunbookSnapshots(ProjectResource project, CancellationToken token = default) { - return Client.ListAll(project.Link("RunbookSnapshots")); + return Client.ListAll(project.Link("RunbookSnapshots"), token: token); } - public Task GetRunbookSnapshotByName(ProjectResource project, string name) + public Task GetRunbookSnapshotByName(ProjectResource project, string name, CancellationToken token = default) { - return Client.Get(project.Link("RunbookSnapshots"), new { name }); + return Client.Get(project.Link("RunbookSnapshots"), new { name }, token); } - public Task> GetRunbooks(ProjectResource project, int skip = 0, int? take = null, string searchByName = null) + public Task> GetRunbooks(ProjectResource project, int skip = 0, int? take = null, string searchByName = null, CancellationToken token = default) { - return Client.List(project.Link("Runbooks"), new { skip, take, searchByName }); + return Client.List(project.Link("Runbooks"), new { skip, take, searchByName }, token); } - public Task> GetAllRunbooks(ProjectResource project) + public Task> GetAllRunbooks(ProjectResource project, CancellationToken token = default) { - return Client.ListAll(project.Link("Runbooks")); + return Client.ListAll(project.Link("Runbooks"), token: token); } } public interface IProjectBetaRepository { - Task GetVersionControlledBranches(ProjectResource projectResource); - Task GetVersionControlledBranch(ProjectResource projectResource, string branch); + Task GetVersionControlledBranches(ProjectResource projectResource, CancellationToken token = default); + Task GetVersionControlledBranch(ProjectResource projectResource, string branch, CancellationToken token = default); } class ProjectBetaRepository : IProjectBetaRepository @@ -139,14 +140,14 @@ public ProjectBetaRepository(IOctopusAsyncRepository repository) this.client = repository.Client; } - public Task GetVersionControlledBranches(ProjectResource projectResource) + public Task GetVersionControlledBranches(ProjectResource projectResource, CancellationToken token = default) { - return client.Get(projectResource.Link("Branches")); + return client.Get(projectResource.Link("Branches"), token: token); } - public Task GetVersionControlledBranch(ProjectResource projectResource, string branch) + public Task GetVersionControlledBranch(ProjectResource projectResource, string branch, CancellationToken token = default) { - return client.Get(projectResource.Link("Branches"), new { name = branch }); + return client.Get(projectResource.Link("Branches"), new { name = branch }, token); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/ProjectTriggerRepository.cs b/source/Octopus.Client/Repositories/Async/ProjectTriggerRepository.cs index e8b1d3799..d55f70e9e 100644 --- a/source/Octopus.Client/Repositories/Async/ProjectTriggerRepository.cs +++ b/source/Octopus.Client/Repositories/Async/ProjectTriggerRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -9,10 +10,10 @@ namespace Octopus.Client.Repositories.Async { public interface IProjectTriggerRepository : ICreate, IModify, IGet, IDelete { - Task FindByName(ProjectResource project, string name); + Task FindByName(ProjectResource project, string name, CancellationToken token = default); - Task CreateOrModify(ProjectResource project, string name, TriggerFilterResource filter, TriggerActionResource action); - Task> FindByRunbook(params string[] runbookIds); + Task CreateOrModify(ProjectResource project, string name, TriggerFilterResource filter, TriggerActionResource action, CancellationToken token = default); + Task> FindByRunbook(CancellationToken token = default, params string[] runbookIds); } class ProjectTriggerRepository : BasicRepository, IProjectTriggerRepository @@ -23,23 +24,23 @@ public ProjectTriggerRepository(IOctopusAsyncRepository repository) MinimumCompatibleVersion("2019.11.0"); } - public Task FindByName(ProjectResource project, string name) + public Task FindByName(ProjectResource project, string name, CancellationToken token = default) { - return FindByName(name, path: project.Link("Triggers")); + return FindByName(name, path: project.Link("Triggers"), token: token); } - public Task CreateOrModify(ProjectResource project, string name, TriggerFilterResource filter, TriggerActionResource action) + public Task CreateOrModify(ProjectResource project, string name, TriggerFilterResource filter, TriggerActionResource action, CancellationToken token = default) { ThrowIfServerVersionIsNotCompatible().ConfigureAwait(false); - return new ProjectTriggerEditor(this).CreateOrModify(project, name, filter, action); + return new ProjectTriggerEditor(this).CreateOrModify(project, name, filter, action, token); } - public async Task> FindByRunbook(params string[] runbookIds) + public async Task> FindByRunbook(CancellationToken token = default, params string[] runbookIds) { await ThrowIfServerVersionIsNotCompatible(); - return await Client.List(await Repository.Link("Triggers"), new { runbooks = runbookIds }); + return await Client.List(await Repository.Link("Triggers"), new { runbooks = runbookIds }, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/ReleaseRepository.cs b/source/Octopus.Client/Repositories/Async/ReleaseRepository.cs index 06cf9389a..fae2832ab 100644 --- a/source/Octopus.Client/Repositories/Async/ReleaseRepository.cs +++ b/source/Octopus.Client/Repositories/Async/ReleaseRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -12,21 +13,23 @@ public interface IReleaseRepository : IGet, ICreate /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) + /// /// - Task> GetDeployments(ReleaseResource release, int skip = 0, int? take = null); + Task> GetDeployments(ReleaseResource release, int skip = 0, int? take = null, CancellationToken token = default); /// /// /// /// /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) + /// /// - Task> GetArtifacts(ReleaseResource release, int skip = 0, int? take = null); - Task GetTemplate(ReleaseResource release); - Task GetPreview(DeploymentPromotionTarget promotionTarget); - Task SnapshotVariables(ReleaseResource release); - Task Create(ReleaseResource release, bool ignoreChannelRules = false); - Task GetProgression(ReleaseResource release); + Task> GetArtifacts(ReleaseResource release, int skip = 0, int? take = null, CancellationToken token = default); + Task GetTemplate(ReleaseResource release, CancellationToken token = default); + Task GetPreview(DeploymentPromotionTarget promotionTarget, CancellationToken token = default); + Task SnapshotVariables(ReleaseResource release, CancellationToken token = default); + Task Create(ReleaseResource release, bool ignoreChannelRules = false, CancellationToken token = default); + Task GetProgression(ReleaseResource release, CancellationToken token = default); } class ReleaseRepository : BasicRepository, IReleaseRepository @@ -36,40 +39,40 @@ public ReleaseRepository(IOctopusAsyncRepository repository) { } - public Task> GetDeployments(ReleaseResource release, int skip = 0, int? take = null) + public Task> GetDeployments(ReleaseResource release, int skip = 0, int? take = null, CancellationToken token = default) { - return Client.List(release.Link("Deployments"), new { skip, take }); + return Client.List(release.Link("Deployments"), new { skip, take }, token); } - public Task> GetArtifacts(ReleaseResource release, int skip = 0, int? take = null) + public Task> GetArtifacts(ReleaseResource release, int skip = 0, int? take = null, CancellationToken token = default) { - return Client.List(release.Link("Artifacts"), new { skip, take }); + return Client.List(release.Link("Artifacts"), new { skip, take }, token); } - public Task GetTemplate(ReleaseResource release) + public Task GetTemplate(ReleaseResource release, CancellationToken token = default) { - return Client.Get(release.Link("DeploymentTemplate")); + return Client.Get(release.Link("DeploymentTemplate"), token: token); } - public Task GetPreview(DeploymentPromotionTarget promotionTarget) + public Task GetPreview(DeploymentPromotionTarget promotionTarget, CancellationToken token = default) { - return Client.Get(promotionTarget.Link("Preview")); + return Client.Get(promotionTarget.Link("Preview"), token: token); } - public async Task SnapshotVariables(ReleaseResource release) + public async Task SnapshotVariables(ReleaseResource release, CancellationToken token = default) { - await Client.Post(release.Link("SnapshotVariables")).ConfigureAwait(false); - return await Get(release.Id).ConfigureAwait(false); + await Client.Post(release.Link("SnapshotVariables"), token: token).ConfigureAwait(false); + return await Get(release.Id, token).ConfigureAwait(false); } - public async Task Create(ReleaseResource release, bool ignoreChannelRules = false) + public async Task Create(ReleaseResource release, bool ignoreChannelRules = false, CancellationToken token = default) { - return await Client.Create(await Repository.Link(CollectionLinkName).ConfigureAwait(false), release, new { ignoreChannelRules }).ConfigureAwait(false); + return await Client.Create(await Repository.Link(CollectionLinkName).ConfigureAwait(false), release, new { ignoreChannelRules }, token).ConfigureAwait(false); } - public Task GetProgression(ReleaseResource release) + public Task GetProgression(ReleaseResource release, CancellationToken token = default) { - return Client.Get(release.Links["Progression"]); + return Client.Get(release.Links["Progression"], token: token); } } } diff --git a/source/Octopus.Client/Repositories/Async/RetentionPolicyRepository.cs b/source/Octopus.Client/Repositories/Async/RetentionPolicyRepository.cs index 7d51ed24f..9a1128cf8 100644 --- a/source/Octopus.Client/Repositories/Async/RetentionPolicyRepository.cs +++ b/source/Octopus.Client/Repositories/Async/RetentionPolicyRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Util; @@ -7,7 +8,7 @@ namespace Octopus.Client.Repositories.Async { public interface IRetentionPolicyRepository { - Task ApplyNow(string spaceId = null); + Task ApplyNow(string spaceId = null, CancellationToken token = default); } class RetentionPolicyRepository : BasicRepository, IRetentionPolicyRepository @@ -17,11 +18,11 @@ public RetentionPolicyRepository(IOctopusAsyncRepository repository) { } - public Task ApplyNow(string spaceId = null) + public Task ApplyNow(string spaceId = null, CancellationToken token = default) { var tasks = new TaskRepository(Repository); var task = new TaskResource { Name = "Retention", Description = "Request to apply retention policies via the API", SpaceId = spaceId}; - return tasks.Create(task); + return tasks.Create(task, token: token); } } } diff --git a/source/Octopus.Client/Repositories/Async/RunbookProcessRepository.cs b/source/Octopus.Client/Repositories/Async/RunbookProcessRepository.cs index 74f05ddb3..75592c2dc 100644 --- a/source/Octopus.Client/Repositories/Async/RunbookProcessRepository.cs +++ b/source/Octopus.Client/Repositories/Async/RunbookProcessRepository.cs @@ -1,11 +1,12 @@ -using System.Threading.Tasks; +using System.Threading; +using System.Threading.Tasks; using Octopus.Client.Model; namespace Octopus.Client.Repositories.Async { public interface IRunbookProcessRepository : IGet, IModify { - Task GetTemplate(RunbookProcessResource runbookProcess); + Task GetTemplate(RunbookProcessResource runbookProcess, CancellationToken token = default); } class RunbookProcessRepository : BasicRepository, IRunbookProcessRepository @@ -15,9 +16,9 @@ public RunbookProcessRepository(IOctopusAsyncRepository repository) { } - public Task GetTemplate(RunbookProcessResource runbookProcess) + public Task GetTemplate(RunbookProcessResource runbookProcess, CancellationToken token = default) { - return Client.Get(runbookProcess.Link("RunbookSnapshotTemplate")); + return Client.Get(runbookProcess.Link("RunbookSnapshotTemplate"), token: token); } } } diff --git a/source/Octopus.Client/Repositories/Async/RunbookRepository.cs b/source/Octopus.Client/Repositories/Async/RunbookRepository.cs index 21c14eac0..e24c58701 100644 --- a/source/Octopus.Client/Repositories/Async/RunbookRepository.cs +++ b/source/Octopus.Client/Repositories/Async/RunbookRepository.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Exceptions; @@ -8,13 +9,13 @@ namespace Octopus.Client.Repositories.Async { public interface IRunbookRepository : IFindByName, IGet, ICreate, IModify, IDelete { - Task FindByName(ProjectResource project, string name); - Task CreateOrModify(ProjectResource project, string name, string description); - Task GetRunbookSnapshotTemplate(RunbookResource runbook); - Task GetRunbookRunTemplate(RunbookResource runbook); - Task GetPreview(DeploymentPromotionTarget promotionTarget); - Task Run(RunbookResource runbook, RunbookRunResource runbookRun); - Task Run(RunbookResource runbook, RunbookRunParameters runbookRunParameters); + Task FindByName(ProjectResource project, string name, CancellationToken token = default); + Task CreateOrModify(ProjectResource project, string name, string description, CancellationToken token = default); + Task GetRunbookSnapshotTemplate(RunbookResource runbook, CancellationToken token = default); + Task GetRunbookRunTemplate(RunbookResource runbook, CancellationToken token = default); + Task GetPreview(DeploymentPromotionTarget promotionTarget, CancellationToken token = default); + Task Run(RunbookResource runbook, RunbookRunResource runbookRun, CancellationToken token = default); + Task Run(RunbookResource runbook, RunbookRunParameters runbookRunParameters, CancellationToken token = default); } class RunbookRepository : BasicRepository, IRunbookRepository @@ -29,29 +30,29 @@ public RunbookRepository(IOctopusAsyncRepository repository) versionAfterWhichRunbookRunParametersAreAvailable = SemanticVersion.Parse("2020.3.1"); } - public Task FindByName(ProjectResource project, string name) + public Task FindByName(ProjectResource project, string name, CancellationToken token = default) { - return FindByName(name, path: project.Link("Runbooks")); + return FindByName(name, path: project.Link("Runbooks"), token: token); } - public Task CreateOrModify(ProjectResource project, string name, string description) + public Task CreateOrModify(ProjectResource project, string name, string description, CancellationToken token = default) { - return new RunbookEditor(this, new RunbookProcessRepository(Repository)).CreateOrModify(project, name, description); + return new RunbookEditor(this, new RunbookProcessRepository(Repository)).CreateOrModify(project, name, description, token); } - public Task GetRunbookSnapshotTemplate(RunbookResource runbook) + public Task GetRunbookSnapshotTemplate(RunbookResource runbook, CancellationToken token = default) { - return Client.Get(runbook.Link("RunbookSnapshotTemplate")); + return Client.Get(runbook.Link("RunbookSnapshotTemplate"), token: token); } - public Task GetRunbookRunTemplate(RunbookResource runbook) + public Task GetRunbookRunTemplate(RunbookResource runbook, CancellationToken token = default) { - return Client.Get(runbook.Link("RunbookRunTemplate")); + return Client.Get(runbook.Link("RunbookRunTemplate"), token: token); } - public Task GetPreview(DeploymentPromotionTarget promotionTarget) + public Task GetPreview(DeploymentPromotionTarget promotionTarget, CancellationToken token = default) { - return Client.Get(promotionTarget.Link("RunbookRunPreview")); + return Client.Get(promotionTarget.Link("RunbookRunPreview"), token: token); } private bool ServerSupportsRunbookRunParameters(string version) @@ -66,16 +67,16 @@ private bool ServerSupportsRunbookRunParameters(string version) serverVersion == integrationTestVersion; } - public async Task Run(RunbookResource runbook, RunbookRunResource runbookRun) + public async Task Run(RunbookResource runbook, RunbookRunResource runbookRun, CancellationToken token = default) { var serverSupportsRunbookRunParameters = ServerSupportsRunbookRunParameters((await Repository.LoadRootDocument()).Version); return serverSupportsRunbookRunParameters ? (await Run(runbook, RunbookRunParameters.MapFrom(runbookRun))).FirstOrDefault() - : await Client.Post(runbook.Link("CreateRunbookRun"), runbookRun); + : await Client.Post(runbook.Link("CreateRunbookRun"), runbookRun, token: token); } - public async Task Run(RunbookResource runbook, RunbookRunParameters runbookRunParameters) + public async Task Run(RunbookResource runbook, RunbookRunParameters runbookRunParameters, CancellationToken token = default) { var serverVersion = (await Repository.LoadRootDocument()).Version; var serverSupportsRunbookRunParameters = ServerSupportsRunbookRunParameters(serverVersion); @@ -84,7 +85,7 @@ public async Task Run(RunbookResource runbook, RunbookRunP throw new UnsupportedApiVersionException($"This Octopus Deploy server is an older version ({serverVersion}) that does not yet support RunbookRunParameters. " + $"Please update your Octopus Deploy server to 2020.3.* or newer to access this feature."); - return await Client.Post(runbook.Link("CreateRunbookRun"), runbookRunParameters); + return await Client.Post(runbook.Link("CreateRunbookRun"), runbookRunParameters, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/RunbookRunRepository.cs b/source/Octopus.Client/Repositories/Async/RunbookRunRepository.cs index 1094f83a3..4e18c19ef 100644 --- a/source/Octopus.Client/Repositories/Async/RunbookRunRepository.cs +++ b/source/Octopus.Client/Repositories/Async/RunbookRunRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,7 +7,7 @@ namespace Octopus.Client.Repositories.Async { public interface IRunbookRunRepository : IGet, ICreate, IPaginate, IDelete { - Task GetTask(RunbookRunResource resource); + Task GetTask(RunbookRunResource resource, CancellationToken token = default); /// /// @@ -16,10 +17,11 @@ public interface IRunbookRunRepository : IGet, ICreate /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) + /// /// - Task> FindBy(string[] projects, string[] runbooks, string[] environments, int skip = 0, int? take = null); - Task Paginate(string[] projects, string[] runbooks, string[] environments, Func, bool> getNextPage); - Task Paginate(string[] projects, string[] runbooks, string[] environments, string[] tenants, Func, bool> getNextPage); + Task> FindBy(string[] projects, string[] runbooks, string[] environments, int skip = 0, int? take = null, CancellationToken token = default); + Task Paginate(string[] projects, string[] runbooks, string[] environments, Func, bool> getNextPage, CancellationToken token = default); + Task Paginate(string[] projects, string[] runbooks, string[] environments, string[] tenants, Func, bool> getNextPage, CancellationToken token = default); } class RunbookRunRepository : BasicRepository, IRunbookRunRepository @@ -29,24 +31,24 @@ public RunbookRunRepository(IOctopusAsyncRepository repository) { } - public Task GetTask(RunbookRunResource resource) + public Task GetTask(RunbookRunResource resource, CancellationToken token = default) { - return Client.Get(resource.Link("Task")); + return Client.Get(resource.Link("Task"), token: token); } - public async Task> FindBy(string[] projects, string[] runbooks, string[] environments, int skip = 0, int? take = null) + public async Task> FindBy(string[] projects, string[] runbooks, string[] environments, int skip = 0, int? take = null, CancellationToken token = default) { - return await Client.List(await Repository.Link("RunbookRuns").ConfigureAwait(false), new { skip, take, projects = projects ?? new string[0], runbooks = runbooks ?? new string[0], environments = environments ?? new string[0] }).ConfigureAwait(false); + return await Client.List(await Repository.Link("RunbookRuns").ConfigureAwait(false), new { skip, take, projects = projects ?? new string[0], runbooks = runbooks ?? new string[0], environments = environments ?? new string[0] }, token).ConfigureAwait(false); } - public Task Paginate(string[] projects, string[] runbooks, string[] environments, Func, bool> getNextPage) + public Task Paginate(string[] projects, string[] runbooks, string[] environments, Func, bool> getNextPage, CancellationToken token = default) { - return Paginate(projects, runbooks, environments, new string[0], getNextPage); + return Paginate(projects, runbooks, environments, new string[0], getNextPage, token); } - public async Task Paginate(string[] projects, string[] runbooks, string[] environments, string[] tenants, Func, bool> getNextPage) + public async Task Paginate(string[] projects, string[] runbooks, string[] environments, string[] tenants, Func, bool> getNextPage, CancellationToken token = default) { - await Client.Paginate(await Repository.Link("RunbookRuns").ConfigureAwait(false), new { projects = projects ?? new string[0], runbooks = runbooks ?? new string[0], environments = environments ?? new string[0], tenants = tenants ?? new string[0] }, getNextPage).ConfigureAwait(false); + await Client.Paginate(await Repository.Link("RunbookRuns").ConfigureAwait(false), new { projects = projects ?? new string[0], runbooks = runbooks ?? new string[0], environments = environments ?? new string[0], tenants = tenants ?? new string[0] }, getNextPage, token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/RunbookSnapshotRepository.cs b/source/Octopus.Client/Repositories/Async/RunbookSnapshotRepository.cs index a17195ba1..69cec8251 100644 --- a/source/Octopus.Client/Repositories/Async/RunbookSnapshotRepository.cs +++ b/source/Octopus.Client/Repositories/Async/RunbookSnapshotRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -12,20 +13,22 @@ public interface IRunbookSnapshotRepository : IGet, ICr /// /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) + /// /// - Task> GetRunbookRuns(RunbookSnapshotResource runbookSnapshot, int skip = 0, int? take = null); + Task> GetRunbookRuns(RunbookSnapshotResource runbookSnapshot, int skip = 0, int? take = null, CancellationToken token = default); /// /// /// /// /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) + /// /// - Task> GetArtifacts(RunbookSnapshotResource runbookSnapshot, int skip = 0, int? take = null); - Task GetTemplate(RunbookSnapshotResource runbookSnapshot); - Task GetPreview(DeploymentPromotionTarget promotionTarget); - Task SnapshotVariables(RunbookSnapshotResource runbookSnapshot); - Task Create(RunbookSnapshotResource runbookSnapshot); + Task> GetArtifacts(RunbookSnapshotResource runbookSnapshot, int skip = 0, int? take = null, CancellationToken token = default); + Task GetTemplate(RunbookSnapshotResource runbookSnapshot, CancellationToken token = default); + Task GetPreview(DeploymentPromotionTarget promotionTarget, CancellationToken token = default); + Task SnapshotVariables(RunbookSnapshotResource runbookSnapshot, CancellationToken token = default); + Task Create(RunbookSnapshotResource runbookSnapshot, CancellationToken token = default); } class RunbookSnapshotRepository : BasicRepository, IRunbookSnapshotRepository @@ -35,35 +38,35 @@ public RunbookSnapshotRepository(IOctopusAsyncRepository repository) { } - public Task> GetRunbookRuns(RunbookSnapshotResource runbookSnapshot, int skip = 0, int? take = null) + public Task> GetRunbookRuns(RunbookSnapshotResource runbookSnapshot, int skip = 0, int? take = null, CancellationToken token = default) { - return Client.List(runbookSnapshot.Link("RunbookRuns"), new { skip, take }); + return Client.List(runbookSnapshot.Link("RunbookRuns"), new { skip, take }, token); } - public Task> GetArtifacts(RunbookSnapshotResource runbookSnapshot, int skip = 0, int? take = null) + public Task> GetArtifacts(RunbookSnapshotResource runbookSnapshot, int skip = 0, int? take = null, CancellationToken token = default) { - return Client.List(runbookSnapshot.Link("Artifacts"), new { skip, take }); + return Client.List(runbookSnapshot.Link("Artifacts"), new { skip, take }, token); } - public Task GetTemplate(RunbookSnapshotResource runbookSnapshot) + public Task GetTemplate(RunbookSnapshotResource runbookSnapshot, CancellationToken token = default) { - return Client.Get(runbookSnapshot.Link("RunbookRunTemplate")); + return Client.Get(runbookSnapshot.Link("RunbookRunTemplate"), token: token); } - public Task GetPreview(DeploymentPromotionTarget promotionTarget) + public Task GetPreview(DeploymentPromotionTarget promotionTarget, CancellationToken token = default) { - return Client.Get(promotionTarget.Link("RunbookRunPreview")); + return Client.Get(promotionTarget.Link("RunbookRunPreview"), token: token); } - public async Task SnapshotVariables(RunbookSnapshotResource runbookSnapshot) + public async Task SnapshotVariables(RunbookSnapshotResource runbookSnapshot, CancellationToken token = default) { - await Client.Post(runbookSnapshot.Link("SnapshotVariables")).ConfigureAwait(false); - return await Get(runbookSnapshot.Id).ConfigureAwait(false); + await Client.Post(runbookSnapshot.Link("SnapshotVariables"), token: token).ConfigureAwait(false); + return await Get(runbookSnapshot.Id, token).ConfigureAwait(false); } - public async Task Create(RunbookSnapshotResource runbookSnapshot) + public async Task Create(RunbookSnapshotResource runbookSnapshot, CancellationToken token = default) { - return await Client.Create(await Repository.Link(CollectionLinkName).ConfigureAwait(false), runbookSnapshot).ConfigureAwait(false); + return await Client.Create(await Repository.Link(CollectionLinkName).ConfigureAwait(false), runbookSnapshot, token: token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/SchedulerRepository.cs b/source/Octopus.Client/Repositories/Async/SchedulerRepository.cs index 896721892..109a0e249 100644 --- a/source/Octopus.Client/Repositories/Async/SchedulerRepository.cs +++ b/source/Octopus.Client/Repositories/Async/SchedulerRepository.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -7,14 +8,14 @@ namespace Octopus.Client.Repositories.Async { public interface ISchedulerRepository { - Task Start(); - Task Start(string taskName); - Task Stop(); - Task Stop(string taskName); - Task Trigger(string taskName); - Task GetLogs(string taskName); - Task GetRawLogs(string taskName); - Task Status(); + Task Start(CancellationToken token = default); + Task Start(string taskName, CancellationToken token = default); + Task Stop(CancellationToken token = default); + Task Stop(string taskName, CancellationToken token = default); + Task Trigger(string taskName, CancellationToken token = default); + Task GetLogs(string taskName, CancellationToken token = default); + Task GetRawLogs(string taskName, CancellationToken token = default); + Task Status(CancellationToken token = default); } class SchedulerRepository : ISchedulerRepository @@ -26,44 +27,44 @@ public SchedulerRepository(IOctopusAsyncRepository repository) this.repository = repository; } - public Task Start() + public Task Start(CancellationToken token = default) { - return repository.Client.GetContent("~/api/scheduler/start"); + return repository.Client.GetContent("~/api/scheduler/start", token: token); } - public Task Start(string taskName) + public Task Start(string taskName, CancellationToken token = default) { - return repository.Client.GetContent($"~/api/scheduler/start?task={taskName}"); + return repository.Client.GetContent($"~/api/scheduler/start?task={taskName}", token: token); } - public Task Trigger(string taskName) + public Task Trigger(string taskName, CancellationToken token = default) { - return repository.Client.GetContent($"~/api/scheduler/trigger?task={taskName}"); + return repository.Client.GetContent($"~/api/scheduler/trigger?task={taskName}", token: token); } - public Task Stop() + public Task Stop(CancellationToken token = default) { - return repository.Client.GetContent("~/api/scheduler/stop"); + return repository.Client.GetContent("~/api/scheduler/stop", token: token); } - public Task Stop(string taskName) + public Task Stop(string taskName, CancellationToken token = default) { - return repository.Client.GetContent($"~/api/scheduler/stop?task={taskName}"); + return repository.Client.GetContent($"~/api/scheduler/stop?task={taskName}", token: token); } - public Task GetLogs(string taskName) + public Task GetLogs(string taskName, CancellationToken token = default) { - return repository.Client.Get($"~/api/scheduler/{taskName}/logs"); + return repository.Client.Get($"~/api/scheduler/{taskName}/logs", token: token); } - public Task GetRawLogs(string taskName) + public Task GetRawLogs(string taskName, CancellationToken token = default) { - return repository.Client.GetContent($"~/api/scheduler/{taskName}/logs/raw"); + return repository.Client.GetContent($"~/api/scheduler/{taskName}/logs/raw", token: token); } - public Task Status() + public Task Status(CancellationToken token = default) { - return repository.Client.Get("~/api/scheduler"); + return repository.Client.Get("~/api/scheduler", token: token); } } } diff --git a/source/Octopus.Client/Repositories/Async/ServerStatusRepository.cs b/source/Octopus.Client/Repositories/Async/ServerStatusRepository.cs index 90f40404e..00087e1fb 100644 --- a/source/Octopus.Client/Repositories/Async/ServerStatusRepository.cs +++ b/source/Octopus.Client/Repositories/Async/ServerStatusRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,9 +7,9 @@ namespace Octopus.Client.Repositories.Async { public interface IServerStatusRepository { - Task GetServerStatus(); - Task GetSystemInfo(ServerStatusResource status); - Task GetServerHealth(); + Task GetServerStatus(CancellationToken token = default); + Task GetSystemInfo(ServerStatusResource status, CancellationToken token = default); + Task GetServerHealth(CancellationToken token = default); } class ServerStatusRepository : BasicRepository, IServerStatusRepository @@ -18,20 +19,20 @@ public ServerStatusRepository(IOctopusAsyncRepository repository) { } - public async Task GetServerStatus() + public async Task GetServerStatus(CancellationToken token = default) { - return await Client.Get(await Repository.Link("ServerStatus").ConfigureAwait(false)).ConfigureAwait(false); + return await Client.Get(await Repository.Link("ServerStatus").ConfigureAwait(false), token: token).ConfigureAwait(false); } - public Task GetSystemInfo(ServerStatusResource status) + public Task GetSystemInfo(ServerStatusResource status, CancellationToken token = default) { if (status == null) throw new ArgumentNullException("status"); - return Client.Get(status.Link("SystemInfo")); + return Client.Get(status.Link("SystemInfo"), token: token); } - public async Task GetServerHealth() + public async Task GetServerHealth(CancellationToken token = default) { - return await Client.Get(await Repository.Link("ServerHealthStatus").ConfigureAwait(false)).ConfigureAwait(false); + return await Client.Get(await Repository.Link("ServerHealthStatus").ConfigureAwait(false), token: token).ConfigureAwait(false); } } } diff --git a/source/Octopus.Client/Repositories/Async/SpaceRepository.cs b/source/Octopus.Client/Repositories/Async/SpaceRepository.cs index b600a0095..e3fbd8a82 100644 --- a/source/Octopus.Client/Repositories/Async/SpaceRepository.cs +++ b/source/Octopus.Client/Repositories/Async/SpaceRepository.cs @@ -1,4 +1,5 @@ using System.IO; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -12,7 +13,7 @@ public interface ISpaceRepository : IFindByName, IGet { - Task SetLogo(SpaceResource space, string fileName, Stream contents); + Task SetLogo(SpaceResource space, string fileName, Stream contents, CancellationToken token = default); } class SpaceRepository : BasicRepository, ISpaceRepository @@ -21,9 +22,9 @@ public SpaceRepository(IOctopusAsyncRepository repository) : base(repository, "S { } - public Task SetLogo(SpaceResource space, string fileName, Stream contents) + public Task SetLogo(SpaceResource space, string fileName, Stream contents, CancellationToken token = default) { - return Client.Post(space.Link("Logo"), new FileUpload { Contents = contents, FileName = fileName }, false); + return Client.Post(space.Link("Logo"), new FileUpload { Contents = contents, FileName = fileName }, false, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/SubscriptionRepository.cs b/source/Octopus.Client/Repositories/Async/SubscriptionRepository.cs index 0c561132a..158bebd4b 100644 --- a/source/Octopus.Client/Repositories/Async/SubscriptionRepository.cs +++ b/source/Octopus.Client/Repositories/Async/SubscriptionRepository.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Threading; +using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -11,7 +12,7 @@ public interface ISubscriptionRepository : IGet, IDelete { - Task CreateOrModify(string name, EventNotificationSubscription eventNotificationSubscription, bool isDisabled); + Task CreateOrModify(string name, EventNotificationSubscription eventNotificationSubscription, bool isDisabled, CancellationToken token = default); } class SubscriptionRepository : BasicRepository, ISubscriptionRepository @@ -20,9 +21,9 @@ public SubscriptionRepository(IOctopusAsyncRepository repository) : base(reposit { } - public Task CreateOrModify(string name, EventNotificationSubscription eventNotificationSubscription, bool isDisabled) + public Task CreateOrModify(string name, EventNotificationSubscription eventNotificationSubscription, bool isDisabled, CancellationToken token = default) { - return new SubscriptionEditor(this).CreateOrModify(name, eventNotificationSubscription, isDisabled); + return new SubscriptionEditor(this).CreateOrModify(name, eventNotificationSubscription, isDisabled, token); } } diff --git a/source/Octopus.Client/Repositories/Async/TagSetRepository.cs b/source/Octopus.Client/Repositories/Async/TagSetRepository.cs index 6e6819bbb..c03e24606 100644 --- a/source/Octopus.Client/Repositories/Async/TagSetRepository.cs +++ b/source/Octopus.Client/Repositories/Async/TagSetRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -7,9 +8,9 @@ namespace Octopus.Client.Repositories.Async { public interface ITagSetRepository : ICreate, IModify, IGet, IDelete, IFindByName, IGetAll { - Task Sort(string[] tagSetIdsInOrder); - Task CreateOrModify(string name); - Task CreateOrModify(string name, string description); + Task Sort(string[] tagSetIdsInOrder, CancellationToken token = default); + Task CreateOrModify(string name, CancellationToken token = default); + Task CreateOrModify(string name, string description, CancellationToken token = default); } class TagSetRepository : BasicRepository, ITagSetRepository @@ -18,19 +19,19 @@ public TagSetRepository(IOctopusAsyncRepository repository) : base(repository, " { } - public async Task Sort(string[] tagSetIdsInOrder) + public async Task Sort(string[] tagSetIdsInOrder, CancellationToken token = default) { - await Client.Put(await Repository.Link("TagSetSortOrder").ConfigureAwait(false), tagSetIdsInOrder).ConfigureAwait(false); + await Client.Put(await Repository.Link("TagSetSortOrder").ConfigureAwait(false), tagSetIdsInOrder, token: token).ConfigureAwait(false); } - public Task CreateOrModify(string name) + public Task CreateOrModify(string name, CancellationToken token = default) { - return new TagSetEditor(this).CreateOrModify(name); + return new TagSetEditor(this).CreateOrModify(name, token); } - public Task CreateOrModify(string name, string description) + public Task CreateOrModify(string name, string description, CancellationToken token = default) { - return new TagSetEditor(this).CreateOrModify(name, description); + return new TagSetEditor(this).CreateOrModify(name, description, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/TaskRepository.cs b/source/Octopus.Client/Repositories/Async/TaskRepository.cs index 360ef1b77..2a1e668e1 100644 --- a/source/Octopus.Client/Repositories/Async/TaskRepository.cs +++ b/source/Octopus.Client/Repositories/Async/TaskRepository.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Util; @@ -11,48 +12,51 @@ namespace Octopus.Client.Repositories.Async { public interface ITaskRepository : IPaginate, IGet, ICreate, ICanExtendSpaceContext { - Task ExecuteHealthCheck(string description = null, int timeoutAfterMinutes = 5, int machineTimeoutAfterMinutes = 1, string environmentId = null, string[] machineIds = null, string restrictTo = null, string workerpoolId = null, string[] workerIds = null); - Task ExecuteCalamariUpdate(string description = null, string[] machineIds = null); - Task ExecuteBackup(string description = null); - Task ExecuteTentacleUpgrade(string description = null, string environmentId = null, string[] machineIds = null, string restrictTo = null, string workerpooltId = null, string[] workerIds = null); - Task ExecuteAdHocScript(string scriptBody, string[] machineIds = null, string[] environmentIds = null, string[] targetRoles = null, string description = null, string syntax = "PowerShell", BuiltInTasks.AdHocScript.TargetType? targetType = null); - Task GetDetails(TaskResource resource, bool? includeVerboseOutput = null, int? tail = null); - Task ExecuteActionTemplate(ActionTemplateResource resource, Dictionary properties, string[] machineIds = null, string[] environmentIds = null, string[] targetRoles = null, string description = null, BuiltInTasks.AdHocScript.TargetType? targetType = null); - Task ExecuteCommunityActionTemplatesSynchronisation(string description = null); + Task ExecuteHealthCheck(string description = null, int timeoutAfterMinutes = 5, int machineTimeoutAfterMinutes = 1, string environmentId = null, string[] machineIds = null, string restrictTo = null, string workerpoolId = null, string[] workerIds = null, CancellationToken token = default); + Task ExecuteCalamariUpdate(string description = null, string[] machineIds = null, CancellationToken token = default); + Task ExecuteBackup(string description = null, CancellationToken token = default); + Task ExecuteTentacleUpgrade(string description = null, string environmentId = null, string[] machineIds = null, string restrictTo = null, string workerpooltId = null, string[] workerIds = null, CancellationToken token = default); + Task ExecuteAdHocScript(string scriptBody, string[] machineIds = null, string[] environmentIds = null, string[] targetRoles = null, string description = null, string syntax = "PowerShell", BuiltInTasks.AdHocScript.TargetType? targetType = null, CancellationToken token = default); + Task GetDetails(TaskResource resource, bool? includeVerboseOutput = null, int? tail = null, CancellationToken token = default); + Task ExecuteActionTemplate(ActionTemplateResource resource, Dictionary properties, string[] machineIds = null, string[] environmentIds = null, string[] targetRoles = null, string description = null, BuiltInTasks.AdHocScript.TargetType? targetType = null, CancellationToken token = default); + Task ExecuteCommunityActionTemplatesSynchronisation(string description = null, CancellationToken token = default); /// /// Gets all the active tasks (optionally limited to pageSize) /// /// Number of items per page, setting to less than the total items still retreives all items, but uses multiple requests reducing memory load on the server + /// /// - Task> GetAllActive(int pageSize = int.MaxValue); + Task> GetAllActive(int pageSize = int.MaxValue, CancellationToken token = default); /// /// Returns all active tasks (optionally limited to pageSize) along with a count of all tasks in each status /// /// /// + /// /// - Task GetActiveWithSummary(int pageSize = int.MaxValue, int skip = 0); + Task GetActiveWithSummary(int pageSize = int.MaxValue, int skip = 0, CancellationToken token = default); /// /// Returns all tasks (optionally limited to pageSize) along with a count of all tasks in each status /// /// /// + /// /// - Task GetAllWithSummary(int pageSize = int.MaxValue, int skip = 0); + Task GetAllWithSummary(int pageSize = int.MaxValue, int skip = 0, CancellationToken token = default); - Task GetRawOutputLog(TaskResource resource); - Task GetTaskTypes(); - Task Rerun(TaskResource resource); - Task Cancel(TaskResource resource); - Task ModifyState(TaskResource resource, TaskState newState, string reason); - Task> GetQueuedBehindTasks(TaskResource resource); - Task WaitForCompletion(TaskResource task, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Action interval = null); - Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Action interval = null); - Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Func interval = null); - Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, TimeSpan? timeoutAfter = null, Func interval = null); + Task GetRawOutputLog(TaskResource resource, CancellationToken token = default); + Task GetTaskTypes(CancellationToken token = default); + Task Rerun(TaskResource resource, CancellationToken token = default); + Task Cancel(TaskResource resource, CancellationToken token = default); + Task ModifyState(TaskResource resource, TaskState newState, string reason, CancellationToken token = default); + Task> GetQueuedBehindTasks(TaskResource resource, CancellationToken token = default); + Task WaitForCompletion(TaskResource task, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Action interval = null, CancellationToken token = default); + Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Action interval = null, CancellationToken token = default); + Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Func interval = null, CancellationToken token = default); + Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, TimeSpan? timeoutAfter = null, Func interval = null, CancellationToken token = default); } class TaskRepository : MixedScopeBaseRepository, ITaskRepository @@ -69,7 +73,7 @@ public TaskRepository(IOctopusAsyncRepository repository) public Task ExecuteHealthCheck( string description = null, int timeoutAfterMinutes = 5, int machineTimeoutAfterMinutes = 1, string environmentId = null, string[] machineIds = null, - string restrictTo = null, string workerpoolId = null, string[] workerIds = null) + string restrictTo = null, string workerpoolId = null, string[] workerIds = null, CancellationToken token = default) { // Default space enabled -> Creates it in the default space // Default space disabled -> Fails @@ -91,10 +95,10 @@ public Task ExecuteHealthCheck( } } }; - return Create(resource); + return Create(resource, token: token); } - public Task ExecuteCalamariUpdate(string description = null, string[] machineIds = null) + public Task ExecuteCalamariUpdate(string description = null, string[] machineIds = null, CancellationToken token = default) { EnsureSingleSpaceContext(); var resource = new TaskResource @@ -106,10 +110,10 @@ public Task ExecuteCalamariUpdate(string description = null, strin {BuiltInTasks.UpdateCalamari.Arguments.MachineIds, machineIds} } }; - return Create(resource); + return Create(resource, token: token); } - public Task ExecuteBackup(string description = null) + public Task ExecuteBackup(string description = null, CancellationToken token = default) { EnsureSystemContext(); var resource = new TaskResource @@ -117,10 +121,10 @@ public Task ExecuteBackup(string description = null) Name = BuiltInTasks.Backup.Name, Description = string.IsNullOrWhiteSpace(description) ? "Manual backup" : description }; - return CreateSystemTask(resource); + return CreateSystemTask(resource, token); } - public async Task ExecuteTentacleUpgrade(string description = null, string environmentId = null, string[] machineIds = null, string restrictTo = null, string workerpoolId = null, string[] workerIds = null) + public async Task ExecuteTentacleUpgrade(string description = null, string environmentId = null, string[] machineIds = null, string restrictTo = null, string workerpoolId = null, string[] workerIds = null, CancellationToken token = default) { EnsureSingleSpaceContext(); var resource = new TaskResource @@ -138,13 +142,13 @@ public async Task ExecuteTentacleUpgrade(string description = null } } }; - return await Create(resource).ConfigureAwait(false); + return await Create(resource, token: token).ConfigureAwait(false); } - public async Task ExecuteAdHocScript(string scriptBody, string[] machineIds = null, string[] environmentIds = null, string[] targetRoles = null, string description = null, string syntax = "PowerShell", BuiltInTasks.AdHocScript.TargetType? targetType = null) + public async Task ExecuteAdHocScript(string scriptBody, string[] machineIds = null, string[] environmentIds = null, string[] targetRoles = null, string description = null, string syntax = "PowerShell", BuiltInTasks.AdHocScript.TargetType? targetType = null, CancellationToken token = default) { EnsureSingleSpaceContext(); - await EnsureValidTargetType(targetType); + await EnsureValidTargetType(targetType, token); var resource = new TaskResource { Name = BuiltInTasks.AdHocScript.Name, @@ -159,7 +163,7 @@ public async Task ExecuteAdHocScript(string scriptBody, string[] m {BuiltInTasks.AdHocScript.Arguments.TargetType, targetType}, } }; - return await Create(resource).ConfigureAwait(false); + return await Create(resource, token: token).ConfigureAwait(false); } public async Task ExecuteActionTemplate( @@ -169,10 +173,11 @@ public async Task ExecuteActionTemplate( string[] environmentIds = null, string[] targetRoles = null, string description = null, - BuiltInTasks.AdHocScript.TargetType? targetType = null) + BuiltInTasks.AdHocScript.TargetType? targetType = null, + CancellationToken token = default) { if (string.IsNullOrEmpty(template?.Id)) throw new ArgumentException("The step template was either null, or has no ID"); - await EnsureValidTargetType(targetType); + await EnsureValidTargetType(targetType, token); var resource = new TaskResource(){SpaceId = template.SpaceId}; resource.Name = BuiltInTasks.AdHocScript.Name; @@ -186,10 +191,10 @@ public async Task ExecuteActionTemplate( {BuiltInTasks.AdHocScript.Arguments.Properties, properties}, {BuiltInTasks.AdHocScript.Arguments.TargetType, targetType}, }; - return await Create(resource); + return await Create(resource, token: token); } - private async Task EnsureValidTargetType(BuiltInTasks.AdHocScript.TargetType? targetType) + private async Task EnsureValidTargetType(BuiltInTasks.AdHocScript.TargetType? targetType, CancellationToken token) { if (targetType == BuiltInTasks.AdHocScript.TargetType.OctopusServer) { @@ -199,7 +204,7 @@ await EnsureServerIsMinimumVersion(minimumRequiredVersion, } } - public Task ExecuteCommunityActionTemplatesSynchronisation(string description = null) + public Task ExecuteCommunityActionTemplatesSynchronisation(string description = null, CancellationToken token = default) { EnsureSystemContext(); @@ -210,10 +215,10 @@ public Task ExecuteCommunityActionTemplatesSynchronisation(string Description = description ?? "Run " + BuiltInTasks.SyncCommunityActionTemplates.Name }; - return CreateSystemTask(resource); + return CreateSystemTask(resource, token); } - public async Task GetDetails(TaskResource resource, bool? includeVerboseOutput = null, int? tail = null) + public async Task GetDetails(TaskResource resource, bool? includeVerboseOutput = null, int? tail = null, CancellationToken token = default) { var args = new Dictionary(StringComparer.OrdinalIgnoreCase); if (includeVerboseOutput.HasValue) @@ -222,60 +227,60 @@ public async Task GetDetails(TaskResource resource, bool? i if (tail.HasValue) args.Add("tail", tail.Value); var parameters = ParameterHelper.CombineParameters(GetAdditionalQueryParameters(), args); - return await Client.Get(resource.Link("Details"), parameters).ConfigureAwait(false); + return await Client.Get(resource.Link("Details"), parameters, token).ConfigureAwait(false); } - public async Task GetRawOutputLog(TaskResource resource) + public async Task GetRawOutputLog(TaskResource resource, CancellationToken token = default) { - return await Client.Get(resource.Link("Raw"), GetAdditionalQueryParameters()).ConfigureAwait(false); + return await Client.Get(resource.Link("Raw"), GetAdditionalQueryParameters(), token).ConfigureAwait(false); } - public async Task GetTaskTypes() + public async Task GetTaskTypes(CancellationToken token = default) { - return await Client.Get((await Client.Repository.LoadRootDocument()).Links["TaskTypes"]); + return await Client.Get((await Client.Repository.LoadRootDocument()).Links["TaskTypes"], token: token); } - public async Task Rerun(TaskResource resource) + public async Task Rerun(TaskResource resource, CancellationToken token = default) { EnsureTaskCanRunInTheCurrentContext(resource); - await Client.Post(resource.Link("Rerun"), (TaskResource)null).ConfigureAwait(false); + await Client.Post(resource.Link("Rerun"), (TaskResource)null, token: token).ConfigureAwait(false); } - public async Task Cancel(TaskResource resource) + public async Task Cancel(TaskResource resource, CancellationToken token = default) { EnsureTaskCanRunInTheCurrentContext(resource); - await Client.Post(resource.Link("Cancel"), (TaskResource)null).ConfigureAwait(false); + await Client.Post(resource.Link("Cancel"), (TaskResource)null, token: token).ConfigureAwait(false); } - public async Task ModifyState(TaskResource resource, TaskState newState, string reason) + public async Task ModifyState(TaskResource resource, TaskState newState, string reason, CancellationToken token = default) { EnsureTaskCanRunInTheCurrentContext(resource); - await Client.Post(resource.Link("State"), new { state = newState, reason = reason }).ConfigureAwait(false); + await Client.Post(resource.Link("State"), new { state = newState, reason = reason }, token: token).ConfigureAwait(false); } - public async Task> GetQueuedBehindTasks(TaskResource resource) + public async Task> GetQueuedBehindTasks(TaskResource resource, CancellationToken token = default) { - return await Client.ListAll(resource.Link("QueuedBehind"), GetAdditionalQueryParameters()).ConfigureAwait(false); + return await Client.ListAll(resource.Link("QueuedBehind"), GetAdditionalQueryParameters(), token).ConfigureAwait(false); } - public Task WaitForCompletion(TaskResource task, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Action interval = null) + public Task WaitForCompletion(TaskResource task, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Action interval = null, CancellationToken token = default) { - return WaitForCompletion(new[] { task }, pollIntervalSeconds, timeoutAfterMinutes, interval); + return WaitForCompletion(new[] { task }, pollIntervalSeconds, timeoutAfterMinutes, interval, token); } - public Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Action interval = null) + public Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Action interval = null, CancellationToken token = default) { Func taskInterval = null; if (interval != null) taskInterval = tr => Task.Run(() => interval(tr)); - return WaitForCompletion(tasks, pollIntervalSeconds, timeoutAfterMinutes, taskInterval); + return WaitForCompletion(tasks, pollIntervalSeconds, timeoutAfterMinutes, taskInterval, token); } - public Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Func interval = null) - => WaitForCompletion(tasks, pollIntervalSeconds, TimeSpan.FromMinutes(timeoutAfterMinutes), interval); + public Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, int timeoutAfterMinutes = 0, Func interval = null, CancellationToken token = default) + => WaitForCompletion(tasks, pollIntervalSeconds, TimeSpan.FromMinutes(timeoutAfterMinutes), interval, token); - public async Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, TimeSpan? timeoutAfter = null, Func interval = null) + public async Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSeconds = 4, TimeSpan? timeoutAfter = null, Func interval = null, CancellationToken token = default) { var start = Stopwatch.StartNew(); if (tasks == null || tasks.Length == 0) @@ -284,7 +289,7 @@ public async Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSecond while (true) { var stillRunning = await Task.WhenAll( - tasks.Select(t => Client.Get(t.Link("Self"), additionalQueryParameters)) + tasks.Select(t => Client.Get(t.Link("Self"), additionalQueryParameters, token)) ) .ConfigureAwait(false); @@ -299,17 +304,17 @@ public async Task WaitForCompletion(TaskResource[] tasks, int pollIntervalSecond throw new TimeoutException($"One or more tasks did not complete before the timeout was reached. We waited {start.Elapsed:hh\\:mm\\:ss} for the tasks to complete."); } - await Task.Delay(TimeSpan.FromSeconds(pollIntervalSeconds)).ConfigureAwait(false); + await Task.Delay(TimeSpan.FromSeconds(pollIntervalSeconds), token).ConfigureAwait(false); } } - public Task> GetAllActive(int pageSize = int.MaxValue) => FindAll(pathParameters: new { active = true, take = pageSize }); + public Task> GetAllActive(int pageSize = int.MaxValue, CancellationToken token = default) => FindAll(pathParameters: new { active = true, take = pageSize }, token: token); - public async Task GetActiveWithSummary(int pageSize = int.MaxValue, int skip = 0) - => await Client.Get(await ResolveLink(), new {active = true, take = pageSize, skip}); + public async Task GetActiveWithSummary(int pageSize = int.MaxValue, int skip = 0, CancellationToken token = default) + => await Client.Get(await ResolveLink(), new {active = true, take = pageSize, skip}, token); - public async Task GetAllWithSummary(int pageSize = int.MaxValue, int skip = 0) - => await Client.Get(await ResolveLink(), new {take = pageSize, skip}); + public async Task GetAllWithSummary(int pageSize = int.MaxValue, int skip = 0, CancellationToken token = default) + => await Client.Get(await ResolveLink(), new {take = pageSize, skip}, token); public ITaskRepository UsingContext(SpaceContext spaceContext) { @@ -331,9 +336,9 @@ void EnsureTaskCanRunInTheCurrentContext(TaskResource task) }, () => { }); } - async Task CreateSystemTask(TaskResource task) + async Task CreateSystemTask(TaskResource task, CancellationToken token) { - return await Client.Create(await Repository.Link(CollectionLinkName).ConfigureAwait(false), task).ConfigureAwait(false); + return await Client.Create(await Repository.Link(CollectionLinkName).ConfigureAwait(false), task, token: token).ConfigureAwait(false); } } diff --git a/source/Octopus.Client/Repositories/Async/TeamsRepository.cs b/source/Octopus.Client/Repositories/Async/TeamsRepository.cs index 3ae226e13..914e64f78 100644 --- a/source/Octopus.Client/Repositories/Async/TeamsRepository.cs +++ b/source/Octopus.Client/Repositories/Async/TeamsRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Util; @@ -14,7 +15,7 @@ public interface ITeamsRepository : IGet, ICanExtendSpaceContext { - Task> GetScopedUserRoles(TeamResource team); + Task> GetScopedUserRoles(TeamResource team, CancellationToken token = default); } class TeamsRepository : MixedScopeBaseRepository, ITeamsRepository @@ -31,7 +32,7 @@ public TeamsRepository(IOctopusAsyncRepository repository) MinimumCompatibleVersion("2019.1.0"); } - public async Task> GetScopedUserRoles(TeamResource team) + public async Task> GetScopedUserRoles(TeamResource team, CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible(); @@ -42,7 +43,7 @@ await Client.Paginate(team.Link("ScopedUserRoles"), GetA { resources.AddRange(page.Items); return true; - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); return resources; } diff --git a/source/Octopus.Client/Repositories/Async/TenantRepository.cs b/source/Octopus.Client/Repositories/Async/TenantRepository.cs index 120d9df7a..54b06c2c5 100644 --- a/source/Octopus.Client/Repositories/Async/TenantRepository.cs +++ b/source/Octopus.Client/Repositories/Async/TenantRepository.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -9,15 +10,15 @@ namespace Octopus.Client.Repositories.Async { public interface ITenantRepository : ICreate, IModify, IGet, IDelete, IFindByName, IGetAll { - Task Status(); - Task SetLogo(TenantResource tenant, string fileName, Stream contents); - Task GetVariables(TenantResource tenant); - Task ModifyVariables(TenantResource tenant, TenantVariableResource variables); - Task> GetMissingVariables(string tenantId = null, string projectId = null, string environmentId = null); - Task> FindAll(string name, string[] tags = null, int pageSize = Int32.MaxValue); - Task CreateOrModify(string name); - Task CreateOrModify(string name, string description); - Task CreateOrModify(string name, string description, string cloneId); + Task Status(CancellationToken token = default); + Task SetLogo(TenantResource tenant, string fileName, Stream contents, CancellationToken token = default); + Task GetVariables(TenantResource tenant, CancellationToken token = default); + Task ModifyVariables(TenantResource tenant, TenantVariableResource variables, CancellationToken token = default); + Task> GetMissingVariables(string tenantId = null, string projectId = null, string environmentId = null, CancellationToken token = default); + Task> FindAll(string name, string[] tags = null, int pageSize = Int32.MaxValue, CancellationToken token = default); + Task CreateOrModify(string name, CancellationToken token = default); + Task CreateOrModify(string name, string description, CancellationToken token = default); + Task CreateOrModify(string name, string description, string cloneId, CancellationToken token = default); } class TenantRepository : BasicRepository, ITenantRepository @@ -27,9 +28,9 @@ public TenantRepository(IOctopusAsyncRepository repository) { } - public Task GetVariables(TenantResource tenant) + public Task GetVariables(TenantResource tenant, CancellationToken token = default) { - return Client.Get(tenant.Link("Variables")); + return Client.Get(tenant.Link("Variables"), token: token); } /// @@ -38,50 +39,51 @@ public Task GetVariables(TenantResource tenant) /// /// /// Number of items per page, setting to less than the total items still retreives all items, but uses multiple requests reducing memory load on the server + /// /// - public async Task> FindAll(string name, string[] tags, int pageSize = int.MaxValue) + public async Task> FindAll(string name, string[] tags, int pageSize = int.MaxValue, CancellationToken token = default) { - return await Client.Get>(await Repository.Link("Tenants").ConfigureAwait(false), new { id = IdValueConstant.IdAll, name, tags, take = pageSize }).ConfigureAwait(false); + return await Client.Get>(await Repository.Link("Tenants").ConfigureAwait(false), new { id = IdValueConstant.IdAll, name, tags, take = pageSize }, token).ConfigureAwait(false); } - public Task ModifyVariables(TenantResource tenant, TenantVariableResource variables) + public Task ModifyVariables(TenantResource tenant, TenantVariableResource variables, CancellationToken token = default) { - return Client.Post(tenant.Link("Variables"), variables); + return Client.Post(tenant.Link("Variables"), variables, token: token); } - public async Task> GetMissingVariables(string tenantId = null, string projectId = null, string environmentId = null) + public async Task> GetMissingVariables(string tenantId = null, string projectId = null, string environmentId = null, CancellationToken token = default) { return await Client.Get>(await Repository.Link("TenantsMissingVariables").ConfigureAwait(false), new { tenantId = tenantId, projectId = projectId, environmentId = environmentId - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); } - public async Task Status() + public async Task Status(CancellationToken token = default) { - return await Client.Get(await Repository.Link("TenantsStatus").ConfigureAwait(false)).ConfigureAwait(false); + return await Client.Get(await Repository.Link("TenantsStatus").ConfigureAwait(false), token: token).ConfigureAwait(false); } - public Task SetLogo(TenantResource tenant, string fileName, Stream contents) + public Task SetLogo(TenantResource tenant, string fileName, Stream contents, CancellationToken token = default) { - return Client.Post(tenant.Link("Logo"), new FileUpload { Contents = contents, FileName = fileName }, false); + return Client.Post(tenant.Link("Logo"), new FileUpload { Contents = contents, FileName = fileName }, false, token); } - public Task CreateOrModify(string name) + public Task CreateOrModify(string name, CancellationToken token = default) { - return new TenantEditor(this).CreateOrModify(name); + return new TenantEditor(this).CreateOrModify(name, token); } - public Task CreateOrModify(string name, string description) + public Task CreateOrModify(string name, string description, CancellationToken token = default) { - return new TenantEditor(this).CreateOrModify(name, description); + return new TenantEditor(this).CreateOrModify(name, description, token: token); } - public Task CreateOrModify(string name, string description, string cloneId) + public Task CreateOrModify(string name, string description, string cloneId, CancellationToken token = default) { - return new TenantEditor(this).CreateOrModify(name, description, cloneId); + return new TenantEditor(this).CreateOrModify(name, description, cloneId, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/TenantVariablesRepository.cs b/source/Octopus.Client/Repositories/Async/TenantVariablesRepository.cs index de7d64f54..21849480e 100644 --- a/source/Octopus.Client/Repositories/Async/TenantVariablesRepository.cs +++ b/source/Octopus.Client/Repositories/Async/TenantVariablesRepository.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,17 +7,17 @@ namespace Octopus.Client.Repositories.Async { public interface ITenantVariablesRepository : IGetAll { - Task> GetAll(ProjectResource projectResource); + Task> GetAll(ProjectResource projectResource, CancellationToken token = default); } class TenantVariablesRepository : BasicRepository, ITenantVariablesRepository { - public async Task> GetAll(ProjectResource projectResource) + public async Task> GetAll(ProjectResource projectResource, CancellationToken token = default) { return await Client.Get>(await Repository.Link("TenantVariables").ConfigureAwait(false), new { projectId = projectResource?.Id - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); } public TenantVariablesRepository(IOctopusAsyncRepository repository) diff --git a/source/Octopus.Client/Repositories/Async/UpgradeConfigurationRepository.cs b/source/Octopus.Client/Repositories/Async/UpgradeConfigurationRepository.cs index 1c172f1c5..7d019ed2a 100644 --- a/source/Octopus.Client/Repositories/Async/UpgradeConfigurationRepository.cs +++ b/source/Octopus.Client/Repositories/Async/UpgradeConfigurationRepository.cs @@ -1,3 +1,4 @@ +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -5,7 +6,7 @@ namespace Octopus.Client.Repositories.Async { public interface IUpgradeConfigurationRepository : IGet, IModify { - Task Get(); + Task Get(CancellationToken token = default); } class UpgradeConfigurationRepository : BasicRepository, IUpgradeConfigurationRepository { @@ -13,10 +14,10 @@ public UpgradeConfigurationRepository(IOctopusAsyncRepository repository) : base { } - public async Task Get() + public async Task Get(CancellationToken token = default) { var link = await ResolveLink(); - var upgradeConfiguration = await Client.Get(link); + var upgradeConfiguration = await Client.Get(link, token: token); return upgradeConfiguration; } } diff --git a/source/Octopus.Client/Repositories/Async/UserPermissionsRepository.cs b/source/Octopus.Client/Repositories/Async/UserPermissionsRepository.cs index 3c5773dea..c24a2d80d 100644 --- a/source/Octopus.Client/Repositories/Async/UserPermissionsRepository.cs +++ b/source/Octopus.Client/Repositories/Async/UserPermissionsRepository.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; using Octopus.Client.Util; @@ -10,9 +11,9 @@ namespace Octopus.Client.Repositories.Async public interface IUserPermissionsRepository : ICanExtendSpaceContext { - Task Get(UserResource user); - Task GetConfiguration(UserResource user); - Task Export(UserPermissionSetResource userPermissions); + Task Get(UserResource user, CancellationToken token = default); + Task GetConfiguration(UserResource user, CancellationToken token = default); + Task Export(UserPermissionSetResource userPermissions, CancellationToken token = default); } class UserPermissionsRepository : MixedScopeBaseRepository, IUserPermissionsRepository @@ -27,22 +28,22 @@ public UserPermissionsRepository(IOctopusAsyncRepository repository) { } - public async Task Get(UserResource user) + public async Task Get(UserResource user, CancellationToken token = default) { if (user == null) throw new ArgumentNullException(nameof(user)); - return await Client.Get(user.Link("Permissions"), GetAdditionalQueryParameters()).ConfigureAwait(false); + return await Client.Get(user.Link("Permissions"), GetAdditionalQueryParameters(), token).ConfigureAwait(false); } - public async Task GetConfiguration(UserResource user) + public async Task GetConfiguration(UserResource user, CancellationToken token = default) { if (user == null) throw new ArgumentNullException(nameof(user)); - return await Client.Get(user.Link("PermissionsConfiguration"), GetAdditionalQueryParameters()).ConfigureAwait(false); + return await Client.Get(user.Link("PermissionsConfiguration"), GetAdditionalQueryParameters(), token).ConfigureAwait(false); } - public async Task Export(UserPermissionSetResource userPermissions) + public async Task Export(UserPermissionSetResource userPermissions, CancellationToken token = default) { if (userPermissions == null) throw new ArgumentNullException(nameof(userPermissions)); - return await Client.GetContent(userPermissions.Link("Export"), GetAdditionalQueryParameters()).ConfigureAwait(false); + return await Client.GetContent(userPermissions.Link("Export"), GetAdditionalQueryParameters(), token).ConfigureAwait(false); } public IUserPermissionsRepository UsingContext(SpaceContext spaceContext) diff --git a/source/Octopus.Client/Repositories/Async/UserRepository.cs b/source/Octopus.Client/Repositories/Async/UserRepository.cs index 78eaf0d69..c6fc1b35c 100644 --- a/source/Octopus.Client/Repositories/Async/UserRepository.cs +++ b/source/Octopus.Client/Repositories/Async/UserRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -12,22 +13,22 @@ public interface IUserRepository : IDelete, ICreate { - Task FindByUsername(string username); - Task Create(string username, string displayName, string password = null, string emailAddress = null); - Task CreateServiceAccount(string username, string displayName); - Task Register(RegisterCommand registerCommand); - Task SignIn(LoginCommand loginCommand); - Task SignIn(string username, string password, bool rememberMe = false); - Task SignOut(); - Task GetCurrent(); - Task GetSpaces(UserResource user); - Task CreateApiKey(UserResource user, string purpose = null); - Task> GetApiKeys(UserResource user); - Task RevokeApiKey(ApiKeyResource apiKey); + Task FindByUsername(string username, CancellationToken token = default); + Task Create(string username, string displayName, string password = null, string emailAddress = null, CancellationToken token = default); + Task CreateServiceAccount(string username, string displayName, CancellationToken token = default); + Task Register(RegisterCommand registerCommand, CancellationToken token = default); + Task SignIn(LoginCommand loginCommand, CancellationToken token = default); + Task SignIn(string username, string password, bool rememberMe = false, CancellationToken token = default); + Task SignOut(CancellationToken token = default); + Task GetCurrent(CancellationToken token = default); + Task GetSpaces(UserResource user, CancellationToken token = default); + Task CreateApiKey(UserResource user, string purpose = null, CancellationToken token = default); + Task> GetApiKeys(UserResource user, CancellationToken token = default); + Task RevokeApiKey(ApiKeyResource apiKey, CancellationToken token = default); [Obsolete("Use the " + nameof(IUserInvitesRepository) + " instead", false)] - Task Invite(string addToTeamId); + Task Invite(string addToTeamId, CancellationToken token = default); [Obsolete("Use the " + nameof(IUserInvitesRepository) + " instead", false)] - Task Invite(ReferenceCollection addToTeamIds); + Task Invite(ReferenceCollection addToTeamIds, CancellationToken token = default); } class UserRepository : BasicRepository, IUserRepository @@ -40,10 +41,10 @@ public UserRepository(IOctopusAsyncRepository repository) invitations = new LegacyInvitationRepository(Repository); } - public Task FindByUsername(string username) - => FindOne(u => u.Username.Equals(username, StringComparison.CurrentCultureIgnoreCase), pathParameters: new {filter = username}); + public Task FindByUsername(string username, CancellationToken token = default) + => FindOne(u => u.Username.Equals(username, StringComparison.CurrentCultureIgnoreCase), pathParameters: new {filter = username}, token: token); - public Task Create(string username, string displayName, string password = null, string emailAddress = null) + public Task Create(string username, string displayName, string password = null, string emailAddress = null, CancellationToken token = default) { return Create(new UserResource { @@ -56,7 +57,7 @@ public Task Create(string username, string displayName, string pas }); } - public Task CreateServiceAccount(string username, string displayName) + public Task CreateServiceAccount(string username, string displayName, CancellationToken token = default) { return Create(new UserResource { @@ -64,50 +65,50 @@ public Task CreateServiceAccount(string username, string displayNa DisplayName = displayName, IsActive = true, IsService = true - }); + }, token: token); } - public async Task Register(RegisterCommand registerCommand) + public async Task Register(RegisterCommand registerCommand, CancellationToken token = default) { - return await Client.Post(await Repository.Link("Register").ConfigureAwait(false), registerCommand).ConfigureAwait(false); + return await Client.Post(await Repository.Link("Register").ConfigureAwait(false), registerCommand, token: token).ConfigureAwait(false); } - public async Task SignIn(LoginCommand loginCommand) + public async Task SignIn(LoginCommand loginCommand, CancellationToken token = default) { - await Client.SignIn(loginCommand).ConfigureAwait(false); + await Client.SignIn(loginCommand, token).ConfigureAwait(false); } - public Task SignIn(string username, string password, bool rememberMe = false) + public Task SignIn(string username, string password, bool rememberMe = false, CancellationToken token = default) { - return SignIn(new LoginCommand() {Username = username, Password = password, RememberMe = rememberMe}); + return SignIn(new LoginCommand() {Username = username, Password = password, RememberMe = rememberMe}, token); } - public Task SignOut() + public Task SignOut(CancellationToken token = default) { - return Client.SignOut(); + return Client.SignOut(token); } - public async Task GetCurrent() + public async Task GetCurrent(CancellationToken token = default) { - return await Client.Get(await Repository.Link("CurrentUser").ConfigureAwait(false)).ConfigureAwait(false); + return await Client.Get(await Repository.Link("CurrentUser").ConfigureAwait(false), token: token).ConfigureAwait(false); } - public Task GetSpaces(UserResource user) + public Task GetSpaces(UserResource user, CancellationToken token = default) { if (user == null) throw new ArgumentNullException("user"); - return Client.Get(user.Link("Spaces")); + return Client.Get(user.Link("Spaces"), token: token); } - public Task CreateApiKey(UserResource user, string purpose = null) + public Task CreateApiKey(UserResource user, string purpose = null, CancellationToken token = default) { if (user == null) throw new ArgumentNullException("user"); return Client.Post(user.Link("ApiKeys"), new { Purpose = purpose ?? "Requested by Octopus.Client" - }); + }, token: token); } - public async Task> GetApiKeys(UserResource user) + public async Task> GetApiKeys(UserResource user, CancellationToken token = default) { if (user == null) throw new ArgumentNullException("user"); var resources = new List(); @@ -116,27 +117,27 @@ await Client.Paginate(user.Link("ApiKeys"), page => { resources.AddRange(page.Items); return true; - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); return resources; } - public Task RevokeApiKey(ApiKeyResource apiKey) + public Task RevokeApiKey(ApiKeyResource apiKey, CancellationToken token = default) { - return Client.Delete(apiKey.Link("Self")); + return Client.Delete(apiKey.Link("Self"), token: token); } [Obsolete("Use the " + nameof(IUserInvitesRepository) + " instead", false)] - public Task Invite(string addToTeamId) + public Task Invite(string addToTeamId, CancellationToken token = default) { if (addToTeamId == null) throw new ArgumentNullException("addToTeamId"); - return Invite(new ReferenceCollection { addToTeamId }); + return Invite(new ReferenceCollection { addToTeamId }, token); } [Obsolete("Use the " + nameof(IUserInvitesRepository) + " instead", false)] - public Task Invite(ReferenceCollection addToTeamIds) + public Task Invite(ReferenceCollection addToTeamIds, CancellationToken token = default) { - return invitations.Create(new InvitationResource { AddToTeamIds = addToTeamIds ?? new ReferenceCollection() }); + return invitations.Create(new InvitationResource { AddToTeamIds = addToTeamIds ?? new ReferenceCollection() }, token: token); } } } diff --git a/source/Octopus.Client/Repositories/Async/UserRolesRepository.cs b/source/Octopus.Client/Repositories/Async/UserRolesRepository.cs index 6c9740aa2..c08af6984 100644 --- a/source/Octopus.Client/Repositories/Async/UserRolesRepository.cs +++ b/source/Octopus.Client/Repositories/Async/UserRolesRepository.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -17,20 +18,20 @@ public UserRolesRepository(IOctopusAsyncRepository repository) MinimumCompatibleVersion("2019.1.0"); } - public override async Task Create(UserRoleResource resource, object pathParameters = null) + public override async Task Create(UserRoleResource resource, object pathParameters = null, CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible(); await RemoveInvalidPermissions(resource).ConfigureAwait(false); - return await base.Create(resource, pathParameters).ConfigureAwait(false); + return await base.Create(resource, pathParameters, token).ConfigureAwait(false); } - public override async Task Modify(UserRoleResource resource) + public override async Task Modify(UserRoleResource resource, CancellationToken token = default) { await ThrowIfServerVersionIsNotCompatible(); await RemoveInvalidPermissions(resource).ConfigureAwait(false); - return await base.Modify(resource).ConfigureAwait(false); + return await base.Modify(resource, token).ConfigureAwait(false); } private async Task RemoveInvalidPermissions(UserRoleResource resource) diff --git a/source/Octopus.Client/Repositories/Async/UserTeamsRepository.cs b/source/Octopus.Client/Repositories/Async/UserTeamsRepository.cs index 6f39b4de8..8f2cd343f 100644 --- a/source/Octopus.Client/Repositories/Async/UserTeamsRepository.cs +++ b/source/Octopus.Client/Repositories/Async/UserTeamsRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,7 +7,7 @@ namespace Octopus.Client.Repositories.Async { public interface IUserTeamsRepository : ICanExtendSpaceContext { - Task Get(UserResource user); + Task Get(UserResource user, CancellationToken token = default); } class UserTeamsRepository : MixedScopeBaseRepository, IUserTeamsRepository @@ -21,10 +22,10 @@ public UserTeamsRepository(IOctopusAsyncRepository repository) { } - public async Task Get(UserResource user) + public async Task Get(UserResource user, CancellationToken token = default) { if (user == null) throw new ArgumentNullException(nameof(user)); - return await Client.Get(user.Link("Teams"), GetAdditionalQueryParameters()).ConfigureAwait(false); + return await Client.Get(user.Link("Teams"), GetAdditionalQueryParameters(), token).ConfigureAwait(false); } public IUserTeamsRepository UsingContext(SpaceContext spaceContext) diff --git a/source/Octopus.Client/Repositories/Async/VariableSetRepository.cs b/source/Octopus.Client/Repositories/Async/VariableSetRepository.cs index dea38cb16..06c29f2a3 100644 --- a/source/Octopus.Client/Repositories/Async/VariableSetRepository.cs +++ b/source/Octopus.Client/Repositories/Async/VariableSetRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -7,8 +8,8 @@ namespace Octopus.Client.Repositories.Async { public interface IVariableSetRepository : IGet, IModify, IGetAll { - Task GetVariableNames(string projects, string[] environments); - Task GetVariablePreview(string project, string channel, string tenant, string runbook, string action, string environment, string machine, string role); + Task GetVariableNames(string projects, string[] environments, CancellationToken token = default); + Task GetVariablePreview(string project, string channel, string tenant, string runbook, string action, string environment, string machine, string role, CancellationToken token = default); } class VariableSetRepository : BasicRepository, IVariableSetRepository @@ -18,17 +19,17 @@ public VariableSetRepository(IOctopusAsyncRepository repository) { } - public async Task GetVariableNames(string project, string[] environments) + public async Task GetVariableNames(string project, string[] environments, CancellationToken token = default) { - return await Client.Get(await Repository.Link("VariableNames").ConfigureAwait(false), new { project, projectEnvironmentsFilter = environments ?? new string[0] }).ConfigureAwait(false); + return await Client.Get(await Repository.Link("VariableNames").ConfigureAwait(false), new { project, projectEnvironmentsFilter = environments ?? new string[0] }, token).ConfigureAwait(false); } - public async Task GetVariablePreview(string project, string channel, string tenant, string runbook, string action, string environment, string machine, string role) + public async Task GetVariablePreview(string project, string channel, string tenant, string runbook, string action, string environment, string machine, string role, CancellationToken token = default) { - return await Client.Get(await Repository.Link("VariablePreview").ConfigureAwait(false), new { project, channel, tenant, runbook, action, environment, machine, role }).ConfigureAwait(false); + return await Client.Get(await Repository.Link("VariablePreview").ConfigureAwait(false), new { project, channel, tenant, runbook, action, environment, machine, role }, token).ConfigureAwait(false); } - public override Task> Get(params string[] ids) + public override Task> Get(CancellationToken token = default, params string[] ids) { throw new NotSupportedException("VariableSet does not support this operation"); } diff --git a/source/Octopus.Client/Repositories/Async/VcsRunbookRepository.cs b/source/Octopus.Client/Repositories/Async/VcsRunbookRepository.cs index be9cc39c3..12400799f 100644 --- a/source/Octopus.Client/Repositories/Async/VcsRunbookRepository.cs +++ b/source/Octopus.Client/Repositories/Async/VcsRunbookRepository.cs @@ -1,15 +1,16 @@ -using System.Threading.Tasks; +using System.Threading; +using System.Threading.Tasks; using Octopus.Client.Model; namespace Octopus.Client.Repositories.Async { public interface IVcsRunbookRepository { - Task Get(string runbookId); - Task Modify(VcsRunbookResource resource, string commitMessage = null); - Task Create(VcsRunbookResource resource, string commitMessage = null); - Task Delete(VcsRunbookResource resource, string commitMessage = null); - Task> List(string partialName = null, int skip = 0, int? take = null); + Task Get(string runbookId, CancellationToken token = default); + Task Modify(VcsRunbookResource resource, string commitMessage = null, CancellationToken token = default); + Task Create(VcsRunbookResource resource, string commitMessage = null, CancellationToken token = default); + Task Delete(VcsRunbookResource resource, string commitMessage = null, CancellationToken token = default); + Task> List(string partialName = null, int skip = 0, int? take = null, CancellationToken token = default); } public class VcsRunbookRepository : IVcsRunbookRepository @@ -24,13 +25,13 @@ public VcsRunbookRepository(IOctopusAsyncRepository repository, VersionControlBr this.branch = branch; } - public Task Get(string runbookId) + public Task Get(string runbookId, CancellationToken token = default) { var uri = branch.Link(RunbookLinkId); - return repository.Client.Get(uri, new { id = runbookId }); + return repository.Client.Get(uri, new { id = runbookId }, token); } - public Task Modify(VcsRunbookResource resource, string commitMessage = null) + public Task Modify(VcsRunbookResource resource, string commitMessage = null, CancellationToken token = default) { var uri = resource.Link("Self"); var resourceWithCommit = new CommitResource @@ -38,11 +39,11 @@ public Task Modify(VcsRunbookResource resource, string commi CommitMessage = commitMessage, Resource = resource }; - repository.Client.Put(uri, resourceWithCommit); - return repository.Client.Get(uri); + repository.Client.Put(uri, resourceWithCommit, token: token); + return repository.Client.Get(uri, token: token); } - public Task Create(VcsRunbookResource resource, string commitMessage = null) + public Task Create(VcsRunbookResource resource, string commitMessage = null, CancellationToken token = default) { var uri = branch.Link(RunbookLinkId); var resourceWithCommit = new CommitResource @@ -50,23 +51,23 @@ public Task Create(VcsRunbookResource resource, string commi CommitMessage = commitMessage, Resource = resource }; - return repository.Client.Post, VcsRunbookResource>(uri, resourceWithCommit); + return repository.Client.Post, VcsRunbookResource>(uri, resourceWithCommit, token: token); } - public Task Delete(VcsRunbookResource resource, string commitMessage = null) + public Task Delete(VcsRunbookResource resource, string commitMessage = null, CancellationToken token = default) { var uri = branch.Link(RunbookLinkId); var commit = new CommitResource { CommitMessage = commitMessage }; - return repository.Client.Delete(uri, new { id = resource.Id }, commit); + return repository.Client.Delete(uri, new { id = resource.Id }, commit, token); } - public Task> List(string partialName = null, int skip = 0, int? take = null) + public Task> List(string partialName = null, int skip = 0, int? take = null, CancellationToken token = default) { var uri = branch.Link(RunbookLinkId); - return repository.Client.List(uri, new { skip, take, partialName }); + return repository.Client.List(uri, new { skip, take, partialName }, token); } } } \ No newline at end of file diff --git a/source/Octopus.Client/Repositories/Async/WorkerPoolRepository.cs b/source/Octopus.Client/Repositories/Async/WorkerPoolRepository.cs index cc0d72113..7eabece6a 100644 --- a/source/Octopus.Client/Repositories/Async/WorkerPoolRepository.cs +++ b/source/Octopus.Client/Repositories/Async/WorkerPoolRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -14,7 +15,8 @@ Task> GetMachines(WorkerPoolResource workerPool, string partialName = null, bool? isDisabled = false, string healthStatuses = null, - string commStyles = null); + string commStyles = null, + CancellationToken token = default); Task Summary( string ids = null, string partialName = null, @@ -22,10 +24,11 @@ Task Summary( bool? isDisabled = false, string healthStatuses = null, string commStyles = null, - bool? hideEmptyPools = false); - Task Sort(string[] workerPoolIdsInOrder); - Task CreateOrModify(string name); - Task CreateOrModify(string name, string description); + bool? hideEmptyPools = false, + CancellationToken token = default); + Task Sort(string[] workerPoolIdsInOrder, CancellationToken token = default); + Task CreateOrModify(string name, CancellationToken token = default); + Task CreateOrModify(string name, string description, CancellationToken token = default); } class WorkerPoolRepository : BasicRepository, IWorkerPoolRepository @@ -41,7 +44,8 @@ public async Task> GetMachines(WorkerPoolResource workerPoo string partialName = null, bool? isDisabled = false, string healthStatuses = null, - string commStyles = null) + string commStyles = null, + CancellationToken token = default) { var resources = new List(); @@ -56,7 +60,7 @@ public async Task> GetMachines(WorkerPoolResource workerPoo { resources.AddRange(page.Items); return true; - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); return resources; } @@ -68,7 +72,8 @@ public async Task Summary( bool? isDisabled = false, string healthStatuses = null, string commStyles = null, - bool? hideEmptyPools = false) + bool? hideEmptyPools = false, + CancellationToken token = default) { return await Client.Get(await Repository.Link("WorkerPoolsSummary").ConfigureAwait(false), new { @@ -79,22 +84,22 @@ public async Task Summary( healthStatuses, commStyles, hideEmptyPools, - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); } - public async Task Sort(string[] workerPoolIdsInOrder) + public async Task Sort(string[] workerPoolIdsInOrder, CancellationToken token = default) { - await Client.Put(await Repository.Link("WorkerPoolSortOrder").ConfigureAwait(false), workerPoolIdsInOrder).ConfigureAwait(false); + await Client.Put(await Repository.Link("WorkerPoolSortOrder").ConfigureAwait(false), workerPoolIdsInOrder, token: token).ConfigureAwait(false); } - public Task CreateOrModify(string name) + public Task CreateOrModify(string name, CancellationToken token = default) { - return new WorkerPoolEditor(this).CreateOrModify(name); + return new WorkerPoolEditor(this).CreateOrModify(name, token); } - public Task CreateOrModify(string name, string description) + public Task CreateOrModify(string name, string description, CancellationToken token = default) { - return new WorkerPoolEditor(this).CreateOrModify(name, description); + return new WorkerPoolEditor(this).CreateOrModify(name, description, token); } } } diff --git a/source/Octopus.Client/Repositories/Async/WorkerRepository.cs b/source/Octopus.Client/Repositories/Async/WorkerRepository.cs index 498efabfe..f0f2e84c8 100644 --- a/source/Octopus.Client/Repositories/Async/WorkerRepository.cs +++ b/source/Octopus.Client/Repositories/Async/WorkerRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Editors.Async; using Octopus.Client.Model; @@ -9,14 +10,15 @@ namespace Octopus.Client.Repositories.Async { public interface IWorkerRepository : IFindByName, IGet, ICreate, IModify, IDelete { - Task Discover(string host, int port = 10933, DiscoverableEndpointType? discoverableEndpointType = null); - Task GetConnectionStatus(WorkerResource machine); - Task> FindByThumbprint(string thumbprint); + Task Discover(string host, int port = 10933, DiscoverableEndpointType? discoverableEndpointType = null, CancellationToken token = default); + Task GetConnectionStatus(WorkerResource machine, CancellationToken token = default); + Task> FindByThumbprint(string thumbprint, CancellationToken token = default); Task CreateOrModify( string name, EndpointResource endpoint, - WorkerPoolResource[] pools); + WorkerPoolResource[] pools, + CancellationToken token = default); Task> List(int skip = 0, int? take = null, @@ -26,7 +28,8 @@ Task> List(int skip = 0, bool? isDisabled = false, string healthStatuses = null, string commStyles = null, - string workerpoolIds = null); + string workerpoolIds = null, + CancellationToken token = default); } class WorkerRepository : BasicRepository, IWorkerRepository @@ -35,29 +38,30 @@ public WorkerRepository(IOctopusAsyncRepository repository) : base(repository, " { } - public async Task Discover(string host, int port = 10933, DiscoverableEndpointType? type = null) + public async Task Discover(string host, int port = 10933, DiscoverableEndpointType? type = null, CancellationToken token = default) { - return await Client.Get(await Repository.Link("DiscoverWorker").ConfigureAwait(false), new { host, port, type }).ConfigureAwait(false); + return await Client.Get(await Repository.Link("DiscoverWorker").ConfigureAwait(false), new { host, port, type }, token).ConfigureAwait(false); } - public Task GetConnectionStatus(WorkerResource worker) + public Task GetConnectionStatus(WorkerResource worker, CancellationToken token = default) { if (worker == null) throw new ArgumentNullException("worker"); - return Client.Get(worker.Link("Connection")); + return Client.Get(worker.Link("Connection"), token: token); } - public async Task> FindByThumbprint(string thumbprint) + public async Task> FindByThumbprint(string thumbprint, CancellationToken token = default) { if (thumbprint == null) throw new ArgumentNullException("thumbprint"); - return await Client.Get>(await Repository.Link("Workers").ConfigureAwait(false), new { id = IdValueConstant.IdAll, thumbprint }).ConfigureAwait(false); + return await Client.Get>(await Repository.Link("Workers").ConfigureAwait(false), new { id = IdValueConstant.IdAll, thumbprint }, token).ConfigureAwait(false); } public Task CreateOrModify( string name, EndpointResource endpoint, - WorkerPoolResource[] workerpools) + WorkerPoolResource[] workerpools, + CancellationToken token = default) { - return new WorkerEditor(this).CreateOrModify(name, endpoint, workerpools); + return new WorkerEditor(this).CreateOrModify(name, endpoint, workerpools, token); } public async Task> List(int skip = 0, @@ -68,7 +72,8 @@ public async Task> List(int skip = 0, bool? isDisabled = false, string healthStatuses = null, string commStyles = null, - string workerpoolIds = null) + string workerpoolIds = null, + CancellationToken token = default) { return await Client.List(await Repository.Link("Workers").ConfigureAwait(false), new { @@ -81,7 +86,7 @@ public async Task> List(int skip = 0, healthStatuses, commStyles, workerpoolIds - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); } } } From 54a816dd2b18677a26e361d3e18418a16bad5e3f Mon Sep 17 00:00:00 2001 From: yj7o5 Date: Wed, 7 Oct 2020 21:01:30 -0500 Subject: [PATCH 04/10] Add CancellationToken optional parameter --- .../Repositories/Async/UserInvitesRepository.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/source/Octopus.Client/Repositories/Async/UserInvitesRepository.cs b/source/Octopus.Client/Repositories/Async/UserInvitesRepository.cs index bd939bf19..5451db8c4 100644 --- a/source/Octopus.Client/Repositories/Async/UserInvitesRepository.cs +++ b/source/Octopus.Client/Repositories/Async/UserInvitesRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -6,8 +7,8 @@ namespace Octopus.Client.Repositories.Async { public interface IUserInvitesRepository { - Task Invite(string addToTeamId); - Task Invite(ReferenceCollection addToTeamIds); + Task Invite(string addToTeamId, CancellationToken token = default); + Task Invite(ReferenceCollection addToTeamIds, CancellationToken token = default); } class UserInvitesRepository : MixedScopeBaseRepository, IUserInvitesRepository @@ -16,17 +17,17 @@ public UserInvitesRepository(IOctopusAsyncRepository repository) : base(reposito { } - public Task Invite(string addToTeamId) + public Task Invite(string addToTeamId, CancellationToken token = default) { if (addToTeamId == null) throw new ArgumentNullException(nameof(addToTeamId)); - return Invite(new ReferenceCollection { addToTeamId }); + return Invite(new ReferenceCollection { addToTeamId }, token); } - public Task Invite(ReferenceCollection addToTeamIds) + public Task Invite(ReferenceCollection addToTeamIds, CancellationToken token = default) { var invitationResource = new InvitationResource { AddToTeamIds = addToTeamIds ?? new ReferenceCollection() }; EnrichSpaceId(invitationResource); - return Create(invitationResource); + return Create(invitationResource, token: token); } } } \ No newline at end of file From 301e6bccdfcef3f7bcd394c6838b95336c1fda15 Mon Sep 17 00:00:00 2001 From: yj7o5 Date: Fri, 9 Oct 2020 22:54:36 -0500 Subject: [PATCH 05/10] Add CancellationToken to left over files --- source/Octopus.Client/OctopusAsyncClient.cs | 2 +- .../IRegisterMachineOperationBase.cs | 10 +++-- .../Operations/RegisterMachineOperation.cs | 38 ++++++++++--------- .../RegisterMachineOperationBase.cs | 22 ++++++----- .../Operations/RegisterWorkerOperation.cs | 24 ++++++------ 5 files changed, 54 insertions(+), 42 deletions(-) diff --git a/source/Octopus.Client/OctopusAsyncClient.cs b/source/Octopus.Client/OctopusAsyncClient.cs index ac0d6cf81..8d85d657e 100644 --- a/source/Octopus.Client/OctopusAsyncClient.cs +++ b/source/Octopus.Client/OctopusAsyncClient.cs @@ -296,7 +296,7 @@ public async Task Paginate(string path, object pathParameters, Func 0 && page.HasLink("Page.Next")) { - page = await List(page.Link("Page.Next")).ConfigureAwait(false); + page = await List(page.Link("Page.Next"), token).ConfigureAwait(false); } } diff --git a/source/Octopus.Client/Operations/IRegisterMachineOperationBase.cs b/source/Octopus.Client/Operations/IRegisterMachineOperationBase.cs index 0b6d56944..24d9f97e0 100644 --- a/source/Octopus.Client/Operations/IRegisterMachineOperationBase.cs +++ b/source/Octopus.Client/Operations/IRegisterMachineOperationBase.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Model; @@ -77,18 +78,21 @@ public interface IRegisterMachineOperationBase /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server endpoint. - Task ExecuteAsync(OctopusServerEndpoint serverEndpoint); + /// + Task ExecuteAsync(OctopusServerEndpoint serverEndpoint, CancellationToken token = default); /// /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy repository. - Task ExecuteAsync(OctopusAsyncRepository repository); + /// + Task ExecuteAsync(OctopusAsyncRepository repository, CancellationToken token = default); /// /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy repository. - Task ExecuteAsync(IOctopusSpaceAsyncRepository repository); + /// + Task ExecuteAsync(IOctopusSpaceAsyncRepository repository, CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Operations/RegisterMachineOperation.cs b/source/Octopus.Client/Operations/RegisterMachineOperation.cs index 1bb76f577..099c8b49c 100644 --- a/source/Octopus.Client/Operations/RegisterMachineOperation.cs +++ b/source/Octopus.Client/Operations/RegisterMachineOperation.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Exceptions; using Octopus.Client.Model; @@ -143,28 +144,29 @@ MachineResource GetMachine(IOctopusSpaceRepository repository) /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server repository. + /// /// /// - public override async Task ExecuteAsync(IOctopusSpaceAsyncRepository repository) + public override async Task ExecuteAsync(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) { - var selectedEnvironments = GetEnvironments(repository).ConfigureAwait(false); - var machinePolicy = GetMachinePolicy(repository).ConfigureAwait(false); - var machineTask = GetMachine(repository).ConfigureAwait(false); - var tenants = GetTenants(repository).ConfigureAwait(false); - await ValidateTenantTags(repository).ConfigureAwait(false); - var proxy = GetProxy(repository).ConfigureAwait(false); + var selectedEnvironments = GetEnvironments(repository, token).ConfigureAwait(false); + var machinePolicy = GetMachinePolicy(repository, token).ConfigureAwait(false); + var machineTask = GetMachine(repository, token).ConfigureAwait(false); + var tenants = GetTenants(repository, token).ConfigureAwait(false); + await ValidateTenantTags(repository, token).ConfigureAwait(false); + var proxy = GetProxy(repository, token).ConfigureAwait(false); var machine = await machineTask; ApplyBaseChanges(machine, await machinePolicy, await proxy); ApplyDeploymentTargetChanges(machine, await selectedEnvironments, await tenants); if (machine.Id != null) - await repository.Machines.Modify(machine).ConfigureAwait(false); + await repository.Machines.Modify(machine, token).ConfigureAwait(false); else - await repository.Machines.Create(machine).ConfigureAwait(false); + await repository.Machines.Create(machine, token).ConfigureAwait(false); } - async Task> GetTenants(IOctopusSpaceAsyncRepository repository) + async Task> GetTenants(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) { if (Tenants == null || !Tenants.Any()) { @@ -174,14 +176,14 @@ async Task> GetTenants(IOctopusSpaceAsyncRepository reposit var tenantsByName = new List(); foreach (var tenantName in Tenants) { - var tenant = await repository.Tenants.FindByName(tenantName).ConfigureAwait(false); + var tenant = await repository.Tenants.FindByName(tenantName, token: token).ConfigureAwait(false); if (tenant != null) tenantsByName.Add(tenant); } var missing = Tenants.Except(tenantsByName.Select(e => e.Name), StringComparer.OrdinalIgnoreCase).ToArray(); - var tenantsById = await repository.Tenants.Get(ids: missing).ConfigureAwait(false); + var tenantsById = await repository.Tenants.Get(token, missing).ConfigureAwait(false); missing = missing.Except(tenantsById.Select(e => e.Id), StringComparer.OrdinalIgnoreCase).ToArray(); if (missing.Any()) @@ -190,24 +192,24 @@ async Task> GetTenants(IOctopusSpaceAsyncRepository reposit return tenantsById.Concat(tenantsByName).ToList(); } - async Task ValidateTenantTags(IOctopusSpaceAsyncRepository repository) + async Task ValidateTenantTags(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) { if (TenantTags == null || !TenantTags.Any()) return; - var tagSets = await repository.TagSets.FindAll().ConfigureAwait(false); + var tagSets = await repository.TagSets.FindAll(token: token).ConfigureAwait(false); var missingTags = TenantTags.Where(tt => !tagSets.Any(ts => ts.Tags.Any(t => t.CanonicalTagName.Equals(tt, StringComparison.OrdinalIgnoreCase)))).ToList(); if (missingTags.Any()) throw new ArgumentException(CouldNotFindMessage("tag", missingTags.ToArray())); } - async Task> GetEnvironments(IOctopusSpaceAsyncRepository repository) + async Task> GetEnvironments(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) { var selectedEnvironments = new List(); foreach (var environmentName in EnvironmentNames) { - var environment = await repository.Environments.FindByName(environmentName).ConfigureAwait(false); + var environment = await repository.Environments.FindByName(environmentName, token: token).ConfigureAwait(false); if (environment != null) selectedEnvironments.Add(environment); } @@ -220,12 +222,12 @@ async Task> GetEnvironments(IOctopusSpaceAsyncReposito return selectedEnvironments; } - async Task GetMachine(IOctopusSpaceAsyncRepository repository) + async Task GetMachine(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) { var existing = default(MachineResource); try { - existing = await repository.Machines.FindByName(MachineName).ConfigureAwait(false); + existing = await repository.Machines.FindByName(MachineName, token: token).ConfigureAwait(false); if (!AllowOverwrite && existing?.Id != null) throw new ArgumentException($"A machine named '{MachineName}' already exists in the environment. Use the 'force' parameter if you intended to update the existing machine."); } diff --git a/source/Octopus.Client/Operations/RegisterMachineOperationBase.cs b/source/Octopus.Client/Operations/RegisterMachineOperationBase.cs index acf59a1ae..9afe80d4a 100644 --- a/source/Octopus.Client/Operations/RegisterMachineOperationBase.cs +++ b/source/Octopus.Client/Operations/RegisterMachineOperationBase.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Exceptions; using Octopus.Client.Model; @@ -136,15 +137,16 @@ protected ProxyResource GetProxy(IOctopusSpaceRepository repository) /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server endpoint. + /// /// /// - public async Task ExecuteAsync(OctopusServerEndpoint serverEndpoint) + public async Task ExecuteAsync(OctopusServerEndpoint serverEndpoint, CancellationToken token = default) { using (var client = await clientFactory.CreateAsyncClient(serverEndpoint).ConfigureAwait(false)) { var repository = new OctopusAsyncRepository(client); - await ExecuteAsync(repository).ConfigureAwait(false); + await ExecuteAsync(repository, token).ConfigureAwait(false); } } @@ -152,40 +154,42 @@ public async Task ExecuteAsync(OctopusServerEndpoint serverEndpoint) /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server repository. + /// /// /// - public async Task ExecuteAsync(OctopusAsyncRepository repository) + public async Task ExecuteAsync(OctopusAsyncRepository repository, CancellationToken token = default) { - await ExecuteAsync((IOctopusSpaceAsyncRepository) repository).ConfigureAwait(false); + await ExecuteAsync((IOctopusSpaceAsyncRepository) repository, token).ConfigureAwait(false); } /// /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server repository. + /// /// /// - public abstract Task ExecuteAsync(IOctopusSpaceAsyncRepository repository); + public abstract Task ExecuteAsync(IOctopusSpaceAsyncRepository repository, CancellationToken token = default); - protected async Task GetMachinePolicy(IOctopusSpaceAsyncRepository repository) + protected async Task GetMachinePolicy(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) { var machinePolicy = default(MachinePolicyResource); if (!string.IsNullOrEmpty(MachinePolicy)) { - machinePolicy = await repository.MachinePolicies.FindByName(MachinePolicy).ConfigureAwait(false); + machinePolicy = await repository.MachinePolicies.FindByName(MachinePolicy, token: token).ConfigureAwait(false); if (machinePolicy == null) throw new ArgumentException(CouldNotFindMessage("machine policy", MachinePolicy)); } return machinePolicy; } - protected async Task GetProxy(IOctopusSpaceAsyncRepository repository) + protected async Task GetProxy(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) { var proxy = default(ProxyResource); if (!string.IsNullOrEmpty(ProxyName)) { - proxy = await repository.Proxies.FindByName(ProxyName).ConfigureAwait(false); + proxy = await repository.Proxies.FindByName(ProxyName, token: token).ConfigureAwait(false); if (proxy == null) throw new ArgumentException(CouldNotFindMessage("proxy name", ProxyName)); } diff --git a/source/Octopus.Client/Operations/RegisterWorkerOperation.cs b/source/Octopus.Client/Operations/RegisterWorkerOperation.cs index f270b92f0..dce8dd246 100644 --- a/source/Octopus.Client/Operations/RegisterWorkerOperation.cs +++ b/source/Octopus.Client/Operations/RegisterWorkerOperation.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Threading; using System.Threading.Tasks; using Octopus.Client.Exceptions; using Octopus.Client.Model; @@ -89,14 +90,15 @@ WorkerResource GetWorker(IOctopusSpaceRepository repository) /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server repository. + /// /// /// - public override async Task ExecuteAsync(IOctopusSpaceAsyncRepository repository) + public override async Task ExecuteAsync(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) { - var selectedPools = GetWorkerPools(repository).ConfigureAwait(false); - var machinePolicy = GetMachinePolicy(repository).ConfigureAwait(false); - var machineTask = GetWorker(repository).ConfigureAwait(false); - var proxy = GetProxy(repository).ConfigureAwait(false); + var selectedPools = GetWorkerPools(repository, token).ConfigureAwait(false); + var machinePolicy = GetMachinePolicy(repository, token).ConfigureAwait(false); + var machineTask = GetWorker(repository, token).ConfigureAwait(false); + var proxy = GetProxy(repository, token).ConfigureAwait(false); var machine = await machineTask; ApplyBaseChanges(machine, await machinePolicy, await proxy); @@ -104,14 +106,14 @@ public override async Task ExecuteAsync(IOctopusSpaceAsyncRepository repository) machine.WorkerPoolIds = new ReferenceCollection((await selectedPools).Select(p => p.Id).ToArray()); if (machine.Id != null) - await repository.Workers.Modify(machine).ConfigureAwait(false); + await repository.Workers.Modify(machine, token).ConfigureAwait(false); else - await repository.Workers.Create(machine).ConfigureAwait(false); + await repository.Workers.Create(machine, token: token).ConfigureAwait(false); } - async Task> GetWorkerPools(IOctopusSpaceAsyncRepository repository) + async Task> GetWorkerPools(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) { - var selectedPools = await repository.WorkerPools.FindByNames(WorkerPoolNames).ConfigureAwait(false); + var selectedPools = await repository.WorkerPools.FindByNames(WorkerPoolNames, token: token).ConfigureAwait(false); var missing = WorkerPoolNames.Except(selectedPools.Select(p => p.Name), StringComparer.OrdinalIgnoreCase).ToList(); @@ -121,12 +123,12 @@ async Task> GetWorkerPools(IOctopusSpaceAsyncRepository return selectedPools; } - async Task GetWorker(IOctopusSpaceAsyncRepository repository) + async Task GetWorker(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) { var existing = default(WorkerResource); try { - existing = await repository.Workers.FindByName(MachineName).ConfigureAwait(false); + existing = await repository.Workers.FindByName(MachineName, token: token).ConfigureAwait(false); if (!AllowOverwrite && existing?.Id != null) throw new ArgumentException($"A worker named '{MachineName}' already exists. Use the 'force' parameter if you intended to update the existing machine."); } From ff84ac0414be98c7a7406d3409b3faccf3875be8 Mon Sep 17 00:00:00 2001 From: yj7o5 Date: Fri, 9 Oct 2020 22:54:56 -0500 Subject: [PATCH 06/10] Fix breaking test due to CancellationToken addition --- .../Operations/RegisterMachineOperationFixture.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/source/Octopus.Client.Tests/Operations/RegisterMachineOperationFixture.cs b/source/Octopus.Client.Tests/Operations/RegisterMachineOperationFixture.cs index 84b319fb9..26761e362 100644 --- a/source/Octopus.Client.Tests/Operations/RegisterMachineOperationFixture.cs +++ b/source/Octopus.Client.Tests/Operations/RegisterMachineOperationFixture.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Threading; using System.Threading.Tasks; using FluentAssertions; @@ -109,7 +110,7 @@ public async Task ShouldCreateNewMachine() await client.Received().Create("/api/machines", Arg.Is(m => m.Name == "Mymachine" && ((ListeningTentacleEndpointResource)m.Endpoint).Uri == "https://mymachine.test.com:10930/" - && m.EnvironmentIds.First() == "environments-2")) + && m.EnvironmentIds.First() == "environments-2"), Arg.Any(), Arg.Is(default(CancellationToken))) .ConfigureAwait(false); } @@ -153,7 +154,7 @@ public async Task ShouldUpdateExistingMachineWhenForceIsEnabled() await client.Received().Update("/machines/whatever/1", Arg.Is(m => m.Id == "machines/84" && m.Name == "Mymachine" - && m.EnvironmentIds.First() == "environments-2")).ConfigureAwait(false); + && m.EnvironmentIds.First() == "environments-2"), Arg.Any(), Arg.Is(default(CancellationToken))).ConfigureAwait(false); } [Test] @@ -177,7 +178,7 @@ public async Task ShouldCreateWhenCantDeserializeMachines() await client.Received().Create("/api/machines", Arg.Is(m => m.Name == "Mymachine" && ((ListeningTentacleEndpointResource)m.Endpoint).Uri == "https://mymachine.test.com:10930/" - && m.EnvironmentIds.First() == "environments-2")).ConfigureAwait(false); + && m.EnvironmentIds.First() == "environments-2"), Arg.Any(), Arg.Is(default(CancellationToken))).ConfigureAwait(false); } [Test] @@ -202,7 +203,7 @@ await client.Received().Update("/machines/whatever/1", Arg.Is(m m.Id == "machines/84" && m.Name == "Mymachine" && m.EnvironmentIds.First() == "environments-2" - && m.MachinePolicyId == "MachinePolicies-1")).ConfigureAwait(false); + && m.MachinePolicyId == "MachinePolicies-1"), Arg.Any(), Arg.Is(default(CancellationToken))).ConfigureAwait(false); } [Test] @@ -228,7 +229,7 @@ await client.Received().Update("/machines/whatever/1", Arg.Is(m m.Id == "machines/84" && m.Name == "Mymachine" && m.EnvironmentIds.First() == "environments-2" - && m.MachinePolicyId == "MachinePolicies-2")).ConfigureAwait(false); + && m.MachinePolicyId == "MachinePolicies-2"), Arg.Any(), Arg.Is(default(CancellationToken))).ConfigureAwait(false); } } } \ No newline at end of file From 51422590e64ffab6ea0c168f9003789656668504 Mon Sep 17 00:00:00 2001 From: yj7o5 Date: Fri, 9 Oct 2020 23:29:00 -0500 Subject: [PATCH 07/10] Miss adding CancellationToken parameter --- source/Octopus.Client/Editors/Async/RunbookProcessEditor.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/Octopus.Client/Editors/Async/RunbookProcessEditor.cs b/source/Octopus.Client/Editors/Async/RunbookProcessEditor.cs index d0afc2051..6d6e986de 100644 --- a/source/Octopus.Client/Editors/Async/RunbookProcessEditor.cs +++ b/source/Octopus.Client/Editors/Async/RunbookProcessEditor.cs @@ -17,9 +17,9 @@ public RunbookProcessEditor(IRunbookProcessRepository repository) public RunbookProcessResource Instance { get; private set; } - public async Task Load(string id) + public async Task Load(string id, CancellationToken token = default) { - Instance = await repository.Get(id).ConfigureAwait(false); + Instance = await repository.Get(id, token).ConfigureAwait(false); return this; } From 4b23d773817d26b27975cef2e8203a140f2423c9 Mon Sep 17 00:00:00 2001 From: yj7o5 Date: Fri, 9 Oct 2020 23:38:38 -0500 Subject: [PATCH 08/10] Update netcore approval file with added token signatures --- ...AreaShouldNotRegress..NETCore.approved.txt | 776 +++++++++--------- 1 file changed, 387 insertions(+), 389 deletions(-) diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt index 32ea86f30..ed6e90f3b 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt @@ -30,27 +30,26 @@ Octopus.Client Boolean IsUsingSecureConnection { get; } Octopus.Client.IOctopusAsyncRepository Repository { get; } Octopus.Client.Model.RootResource RootDocument { get; } - Task Create(String, Octopus.Client.TResource, Object) - Task Delete(String, Object, Object) + Task Create(String, Octopus.Client.TResource, Object, CancellationToken) + Task Delete(String, Object, Object, CancellationToken) Octopus.Client.IOctopusSpaceAsyncRepository ForSpace(Octopus.Client.Model.SpaceResource) Octopus.Client.IOctopusSystemAsyncRepository ForSystem() - Task Get(String, Object) - Task GetContent(String, Object) - Task> List(String, Object) - Task> ListAll(String, Object) - Task Paginate(String, Func, Boolean>) - Task Paginate(String, Object, Func, Boolean>) - Task Post(String, Octopus.Client.TResource, Object) - Task Post(String, Octopus.Client.TResource, Object) - Task Post(String) - Task Put(String, Octopus.Client.TResource) - Task Put(String) - Task Put(String, Octopus.Client.TResource, Object) - Task PutContent(String, Stream) + Task Get(String, Object, CancellationToken) + Task GetContent(String, Object, CancellationToken) + Task> List(String, Object, CancellationToken) + Task> ListAll(String, Object, CancellationToken) + Task Paginate(String, Func, Boolean>, CancellationToken) + Task Paginate(String, Object, Func, Boolean>, CancellationToken) + Task Post(String, Octopus.Client.TResource, Object, CancellationToken) + Task Post(String, Octopus.Client.TResource, Object, CancellationToken) + Task Post(String, CancellationToken) + Task Put(String, CancellationToken) + Task Put(String, Octopus.Client.TResource, Object, CancellationToken) + Task PutContent(String, Stream, CancellationToken) Uri QualifyUri(String, Object) - Task SignIn(Octopus.Client.Model.LoginCommand) - Task SignOut() - Task Update(String, Octopus.Client.TResource, Object) + Task SignIn(Octopus.Client.Model.LoginCommand, CancellationToken) + Task SignOut(CancellationToken) + Task Update(String, Octopus.Client.TResource, Object, CancellationToken) } interface IOctopusAsyncRepository Octopus.Client.IOctopusSpaceAsyncRepository @@ -269,28 +268,27 @@ Octopus.Client Octopus.Client.IOctopusAsyncRepository Repository { get; } Octopus.Client.Model.RootResource RootDocument { get; } static Task Create(Octopus.Client.OctopusServerEndpoint, Octopus.Client.OctopusClientOptions) - Task Create(String, Octopus.Client.TResource, Object) - Task Delete(String, Object, Object) + Task Create(String, Octopus.Client.TResource, Object, CancellationToken) + Task Delete(String, Object, Object, CancellationToken) void Dispose() Octopus.Client.IOctopusSpaceAsyncRepository ForSpace(Octopus.Client.Model.SpaceResource) Octopus.Client.IOctopusSystemAsyncRepository ForSystem() - Task Get(String, Object) - Task GetContent(String, Object) - Task> List(String, Object) - Task> ListAll(String, Object) - Task Paginate(String, Object, Func, Boolean>) - Task Paginate(String, Func, Boolean>) - Task Post(String, Octopus.Client.TResource, Object) - Task Post(String, Octopus.Client.TResource, Object) - Task Post(String) - Task Put(String, Octopus.Client.TResource) - Task Put(String) - Task Put(String, Octopus.Client.TResource, Object) - Task PutContent(String, Stream) + Task Get(String, Object, CancellationToken) + Task GetContent(String, Object, CancellationToken) + Task> List(String, Object, CancellationToken) + Task> ListAll(String, Object, CancellationToken) + Task Paginate(String, Object, Func, Boolean>, CancellationToken) + Task Paginate(String, Func, Boolean>, CancellationToken) + Task Post(String, Octopus.Client.TResource, Object, CancellationToken) + Task Post(String, Octopus.Client.TResource, Object, CancellationToken) + Task Post(String, CancellationToken) + Task Put(String, CancellationToken) + Task Put(String, Octopus.Client.TResource, Object, CancellationToken) + Task PutContent(String, Stream, CancellationToken) Uri QualifyUri(String, Object) - Task SignIn(Octopus.Client.Model.LoginCommand) - Task SignOut() - Task Update(String, Octopus.Client.TResource, Object) + Task SignIn(Octopus.Client.Model.LoginCommand, CancellationToken) + Task SignOut(CancellationToken) + Task Update(String, Octopus.Client.TResource, Object, CancellationToken) } class OctopusAsyncRepository Octopus.Client.IOctopusAsyncRepository @@ -966,11 +964,11 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IAccountRepository) Octopus.Client.Editors.Async.TAccountResource Instance { get; } - Task CreateOrModify(String) + Task CreateOrModify(String, CancellationToken) Octopus.Client.Editors.Async.TAccountEditor Customize(Action) - Task FindByName(String) - Task Save() - Task Usages() + Task FindByName(String, CancellationToken) + Task Save(CancellationToken) + Task Usages(CancellationToken) } class AmazonWebServicesAccountEditor Octopus.Client.Editors.Async.IResourceEditor @@ -985,10 +983,10 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.AccountEditor { .ctor(Octopus.Client.Repositories.Async.IAccountRepository) - Task> ResourceGroups() - Task> StorageAccounts() - Task> WebSites() - Task> WebSlots(Octopus.Client.Model.Accounts.WebSite) + Task> ResourceGroups(CancellationToken) + Task> StorageAccounts(CancellationToken) + Task> WebSites(CancellationToken) + Task> WebSlots(Octopus.Client.Model.Accounts.WebSite, CancellationToken) } class AzureSubscriptionAccountEditor Octopus.Client.Editors.Async.IResourceEditor @@ -996,11 +994,11 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.AccountEditor { .ctor(Octopus.Client.Repositories.Async.IAccountRepository) - Task> StorageAccounts(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource) - Task> WebSites(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource) - Task> WebSites() - Task> WebSlots(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource, Octopus.Client.Model.Accounts.WebSite) - Task> WebSlots(Octopus.Client.Model.Accounts.WebSite) + Task> StorageAccounts(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource, CancellationToken) + Task> WebSites(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource, CancellationToken) + Task> WebSites(CancellationToken) + Task> WebSlots(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource, Octopus.Client.Model.Accounts.WebSite, CancellationToken) + Task> WebSlots(Octopus.Client.Model.Accounts.WebSite, CancellationToken) } class CertificateEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1008,11 +1006,11 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.ICertificateRepository) Octopus.Client.Model.CertificateResource Instance { get; } - Task Create(String, String) + Task Create(String, String, CancellationToken) Octopus.Client.Editors.Async.CertificateEditor Customize(Action) - Task FindByName(String) - Task Save() - Task Usages() + Task FindByName(String, CancellationToken) + Task Save(CancellationToken) + Task Usages(CancellationToken) } class ChannelEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1026,10 +1024,10 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.ChannelEditor AddRule(String, String, Octopus.Client.Model.DeploymentActionResource[]) Octopus.Client.Editors.Async.ChannelEditor ClearRules() Octopus.Client.Editors.Async.ChannelEditor ClearTenantTags() - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String) - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String, CancellationToken) Octopus.Client.Editors.Async.ChannelEditor Customize(Action) - Task Save() + Task Save(CancellationToken) Octopus.Client.Editors.Async.ChannelEditor SetAsDefaultChannel() Octopus.Client.Editors.Async.ChannelEditor UsingLifecycle(Octopus.Client.Model.LifecycleResource) } @@ -1043,9 +1041,9 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.DeploymentProcessEditor ClearSteps() Octopus.Client.Editors.Async.DeploymentProcessEditor Customize(Action) Octopus.Client.Model.DeploymentStepResource FindStep(String) - Task Load(String) + Task Load(String, CancellationToken) Octopus.Client.Editors.Async.DeploymentProcessEditor RemoveStep(String) - Task Save() + Task Save(CancellationToken) } class EnvironmentEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1053,11 +1051,11 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IEnvironmentRepository) Octopus.Client.Model.EnvironmentResource Instance { get; } - Task CreateOrModify(String) - Task CreateOrModify(String, String, Boolean) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, Boolean, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.EnvironmentEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } interface IResourceBuilder { @@ -1067,7 +1065,7 @@ Octopus.Client.Editors.Async { Octopus.Client.Editors.Async.TResource Instance { get; } Octopus.Client.Editors.Async.TResourceBuilder Customize(Action) - Task Save() + Task Save(CancellationToken) } class LibraryVariableSetEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1077,10 +1075,10 @@ Octopus.Client.Editors.Async Octopus.Client.Model.LibraryVariableSetResource Instance { get; } Task Variables { get; } Octopus.Client.Model.IVariableTemplateContainerEditor VariableTemplates { get; } - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.LibraryVariableSetEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class LifecycleEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1091,10 +1089,10 @@ Octopus.Client.Editors.Async Octopus.Client.Model.PhaseResource AddOrUpdatePhase(String) Octopus.Client.Editors.Async.LifecycleEditor AsSimplePromotionLifecycle(IEnumerable) Octopus.Client.Editors.Async.LifecycleEditor Clear() - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.LifecycleEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class MachineEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1102,18 +1100,18 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IMachineRepository) Octopus.Client.Model.MachineResource Instance { get; } - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[]) - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], Octopus.Client.Model.TenantResource[], Octopus.Client.Model.TagResource[], Nullable) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], CancellationToken) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], Octopus.Client.Model.TenantResource[], Octopus.Client.Model.TagResource[], Nullable, CancellationToken) Octopus.Client.Editors.Async.MachineEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class ProjectChannelsEditor { .ctor(Octopus.Client.Repositories.Async.IChannelRepository, Octopus.Client.Model.ProjectResource) - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task Delete(String) - Task SaveAll() + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task Delete(String, CancellationToken) + Task SaveAll(CancellationToken) } class ProjectEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1126,12 +1124,12 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.ProjectTriggersEditor Triggers { get; } Task Variables { get; } Octopus.Client.Model.IVariableTemplateContainerEditor VariableTemplates { get; } - Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource) - Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, String, String) + Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, CancellationToken) + Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, String, String, CancellationToken) Octopus.Client.Editors.Async.ProjectEditor Customize(Action) Octopus.Client.Editors.Async.ProjectEditor IncludingLibraryVariableSets(Octopus.Client.Model.LibraryVariableSetResource[]) - Task Save() - Task SetLogo(String) + Task Save(CancellationToken) + Task SetLogo(String, CancellationToken) } class ProjectGroupEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1139,10 +1137,10 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IProjectGroupRepository) Octopus.Client.Model.ProjectGroupResource Instance { get; } - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.ProjectGroupEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class ProjectTriggerEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1150,16 +1148,16 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IProjectTriggerRepository) Octopus.Client.Model.ProjectTriggerResource Instance { get; } - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource, CancellationToken) Octopus.Client.Editors.Async.ProjectTriggerEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class ProjectTriggersEditor { .ctor(Octopus.Client.Repositories.Async.IProjectTriggerRepository, Octopus.Client.Model.ProjectResource) - Task CreateOrModify(String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource) - Task Delete(String) - Task SaveAll() + Task CreateOrModify(String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource, CancellationToken) + Task Delete(String, CancellationToken) + Task SaveAll(CancellationToken) } class RunbookEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1168,10 +1166,10 @@ Octopus.Client.Editors.Async .ctor(Octopus.Client.Repositories.Async.IRunbookRepository, Octopus.Client.Repositories.Async.IRunbookProcessRepository) Octopus.Client.Model.RunbookResource Instance { get; } Task RunbookProcess { get; } - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String, CancellationToken) Octopus.Client.Editors.Async.RunbookEditor Customize(Action) - Task Load(String) - Task Save() + Task Load(String, CancellationToken) + Task Save(CancellationToken) } class RunbookProcessEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1183,9 +1181,9 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.RunbookProcessEditor ClearSteps() Octopus.Client.Editors.Async.RunbookProcessEditor Customize(Action) Octopus.Client.Model.DeploymentStepResource FindStep(String) - Task Load(String) + Task Load(String, CancellationToken) Octopus.Client.Editors.Async.RunbookProcessEditor RemoveStep(String) - Task Save() + Task Save(CancellationToken) } class SshKeyPairAccountEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1200,9 +1198,9 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.ISubscriptionRepository) Octopus.Client.Model.SubscriptionResource Instance { get; } - Task CreateOrModify(String, Octopus.Client.Model.EventNotificationSubscription, Boolean) + Task CreateOrModify(String, Octopus.Client.Model.EventNotificationSubscription, Boolean, CancellationToken) Octopus.Client.Editors.Async.SubscriptionEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class TagSetEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1212,11 +1210,11 @@ Octopus.Client.Editors.Async Octopus.Client.Model.TagSetResource Instance { get; } Octopus.Client.Editors.Async.TagSetEditor AddOrUpdateTag(String, String, String) Octopus.Client.Editors.Async.TagSetEditor ClearTags() - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.TagSetEditor Customize(Action) Octopus.Client.Editors.Async.TagSetEditor RemoveTag(String) - Task Save() + Task Save(CancellationToken) } class TenantEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1228,11 +1226,11 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.TenantEditor ClearProjects() Octopus.Client.Editors.Async.TenantEditor ClearTags() Octopus.Client.Editors.Async.TenantEditor ConnectToProjectAndEnvironments(Octopus.Client.Model.ProjectResource, Octopus.Client.Model.EnvironmentResource[]) - Task CreateOrModify(String) - Task CreateOrModify(String, String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, String, CancellationToken) Octopus.Client.Editors.Async.TenantEditor Customize(Action) - Task Save() - Task SetLogo(String) + Task Save(CancellationToken) + Task SetLogo(String, CancellationToken) Octopus.Client.Editors.Async.TenantEditor WithTag(Octopus.Client.Model.TagResource) } class TenantVariablesEditor @@ -1242,8 +1240,8 @@ Octopus.Client.Editors.Async .ctor(Octopus.Client.Repositories.Async.ITenantRepository, Octopus.Client.Model.TenantResource) Octopus.Client.Model.TenantVariableResource Instance { get; } Octopus.Client.Editors.Async.TenantVariablesEditor Customize(Action) - Task Load() - Task Save() + Task Load(CancellationToken) + Task Save(CancellationToken) } class UsernamePasswordAccountEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1264,8 +1262,8 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.VariableSetEditor AddOrUpdateVariableValue(String, String) Octopus.Client.Editors.Async.VariableSetEditor AddOrUpdateVariableValue(String, String, String) Octopus.Client.Editors.Async.VariableSetEditor Customize(Action) - Task Load(String) - Task Save() + Task Load(String, CancellationToken) + Task Save(CancellationToken) } class VariableTemplateContainerEditor`1 { @@ -1287,9 +1285,9 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IWorkerRepository) Octopus.Client.Model.WorkerResource Instance { get; } - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.WorkerPoolResource[]) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.WorkerPoolResource[], CancellationToken) Octopus.Client.Editors.Async.WorkerEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class WorkerPoolEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1297,10 +1295,10 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IWorkerPoolRepository) Octopus.Client.Model.WorkerPoolResource Instance { get; } - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.WorkerPoolEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } } Octopus.Client.Exceptions @@ -6465,9 +6463,9 @@ Octopus.Client.Operations void Execute(Octopus.Client.OctopusServerEndpoint) void Execute(Octopus.Client.OctopusRepository) void Execute(Octopus.Client.IOctopusSpaceRepository) - Task ExecuteAsync(Octopus.Client.OctopusServerEndpoint) - Task ExecuteAsync(Octopus.Client.OctopusAsyncRepository) - Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository) + Task ExecuteAsync(Octopus.Client.OctopusServerEndpoint, CancellationToken) + Task ExecuteAsync(Octopus.Client.OctopusAsyncRepository, CancellationToken) + Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository, CancellationToken) } interface IRegisterWorkerOperation Octopus.Client.Operations.IRegisterMachineOperationBase @@ -6487,7 +6485,7 @@ Octopus.Client.Operations String[] Tenants { get; set; } String[] TenantTags { get; set; } void Execute(Octopus.Client.IOctopusSpaceRepository) - Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository) + Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository, CancellationToken) } abstract class RegisterMachineOperationBase Octopus.Client.Operations.IRegisterMachineOperationBase @@ -6505,9 +6503,9 @@ Octopus.Client.Operations void Execute(Octopus.Client.OctopusServerEndpoint) void Execute(Octopus.Client.OctopusRepository) void Execute(Octopus.Client.IOctopusSpaceRepository) - Task ExecuteAsync(Octopus.Client.OctopusServerEndpoint) - Task ExecuteAsync(Octopus.Client.OctopusAsyncRepository) - Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository) + Task ExecuteAsync(Octopus.Client.OctopusServerEndpoint, CancellationToken) + Task ExecuteAsync(Octopus.Client.OctopusAsyncRepository, CancellationToken) + Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository, CancellationToken) } class RegisterWorkerOperation Octopus.Client.Operations.IRegisterMachineOperationBase @@ -6518,7 +6516,7 @@ Octopus.Client.Operations .ctor(Octopus.Client.IOctopusClientFactory) String[] WorkerPoolNames { get; set; } void Execute(Octopus.Client.IOctopusSpaceRepository) - Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository) + Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository, CancellationToken) } } Octopus.Client.Repositories @@ -7289,16 +7287,16 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate { Octopus.Client.Model.Accounts.AccountType DetermineAccountType() - Task> FindAllOfType(Object) - Task FindByNameOfType(String) - Task> FindByNamesOfType(IEnumerable) - Task> FindManyOfType(Func, Object) - Task FindOneOfType(Func, Object) - Task GetAccountUsage(Octopus.Client.Model.Accounts.AccountResource) - Task GetOfType(String) - Task> GetOfType(String[]) - Task PaginateOfType(Func, Boolean>, Object) - Task RefreshOfType(Octopus.Client.Repositories.Async.TAccount) + Task> FindAllOfType(Object, CancellationToken) + Task FindByNameOfType(String, CancellationToken) + Task> FindByNamesOfType(IEnumerable, CancellationToken) + Task> FindManyOfType(Func, Object, CancellationToken) + Task FindOneOfType(Func, Object, CancellationToken) + Task GetAccountUsage(Octopus.Client.Model.Accounts.AccountResource, CancellationToken) + Task GetOfType(String, CancellationToken) + Task> GetOfType(CancellationToken, String[]) + Task PaginateOfType(Func, Boolean>, Object, CancellationToken) + Task RefreshOfType(Octopus.Client.Repositories.Async.TAccount, CancellationToken) } interface IActionTemplateRepository Octopus.Client.Repositories.Async.ICreate @@ -7309,10 +7307,10 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IGetAll { - Task GetVersion(Octopus.Client.Model.ActionTemplateResource, Int32) - Task> Search() - Task SetLogo(Octopus.Client.Model.ActionTemplateResource, String, Stream) - Task UpdateActions(Octopus.Client.Model.ActionTemplateResource, Octopus.Client.Model.ActionsUpdateResource) + Task GetVersion(Octopus.Client.Model.ActionTemplateResource, Int32, CancellationToken) + Task> Search(CancellationToken) + Task SetLogo(Octopus.Client.Model.ActionTemplateResource, String, Stream, CancellationToken) + Task UpdateActions(Octopus.Client.Model.ActionTemplateResource, Octopus.Client.Model.ActionsUpdateResource, CancellationToken) } interface IArtifactRepository Octopus.Client.Repositories.Async.IPaginate @@ -7321,14 +7319,14 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task> FindRegarding(Octopus.Client.Extensibility.IResource) - Task GetContent(Octopus.Client.Model.ArtifactResource) - Task PutContent(Octopus.Client.Model.ArtifactResource, Stream) + Task> FindRegarding(Octopus.Client.Extensibility.IResource, CancellationToken) + Task GetContent(Octopus.Client.Model.ArtifactResource, CancellationToken) + Task PutContent(Octopus.Client.Model.ArtifactResource, Stream, CancellationToken) } interface IBackupRepository { - Task GetConfiguration() - Task ModifyConfiguration(Octopus.Client.Model.BackupConfigurationResource) + Task GetConfiguration(CancellationToken) + Task ModifyConfiguration(Octopus.Client.Model.BackupConfigurationResource, CancellationToken) } interface IBranchScopedRepository { @@ -7336,25 +7334,25 @@ Octopus.Client.Repositories.Async } interface IBuildInformationRepository { - Task Delete(Octopus.Client.Model.BuildInformation.OctopusPackageVersionBuildInformationMappedResource) - Task DeleteBuilds(IReadOnlyList) - Task Get(String) - Task> LatestBuilds(Int32, Int32) - Task> ListBuilds(String, Int32, Int32) - Task Push(String, String, Octopus.Client.Model.BuildInformation.OctopusBuildInformation, Octopus.Client.Model.OverwriteMode) - Task Push(String, String, Octopus.Client.Model.BuildInformation.OctopusBuildInformation, Boolean) + Task Delete(Octopus.Client.Model.BuildInformation.OctopusPackageVersionBuildInformationMappedResource, CancellationToken) + Task DeleteBuilds(IReadOnlyList, CancellationToken) + Task Get(String, CancellationToken) + Task> LatestBuilds(Int32, Int32, CancellationToken) + Task> ListBuilds(String, Int32, Int32, CancellationToken) + Task Push(String, String, Octopus.Client.Model.BuildInformation.OctopusBuildInformation, Octopus.Client.Model.OverwriteMode, CancellationToken) + Task Push(String, String, Octopus.Client.Model.BuildInformation.OctopusBuildInformation, Boolean, CancellationToken) } interface IBuiltInPackageRepositoryRepository { - Task DeletePackage(Octopus.Client.Model.PackageResource) - Task DeletePackages(IReadOnlyList) - Task GetPackage(String, String) - Task> LatestPackages(Int32, Int32) - Task> ListPackages(String, Int32, Int32) - Task PushPackage(String, Stream, Boolean) - Task PushPackage(String, Stream, Boolean, Boolean) - Task PushPackage(String, Stream, Octopus.Client.Model.OverwriteMode) - Task PushPackage(String, Stream, Octopus.Client.Model.OverwriteMode, Boolean) + Task DeletePackage(Octopus.Client.Model.PackageResource, CancellationToken) + Task DeletePackages(IReadOnlyList, CancellationToken) + Task GetPackage(String, String, CancellationToken) + Task> LatestPackages(Int32, Int32, CancellationToken) + Task> ListPackages(String, Int32, Int32, CancellationToken) + Task PushPackage(String, Stream, Boolean, CancellationToken) + Task PushPackage(String, Stream, Boolean, Boolean, CancellationToken) + Task PushPackage(String, Stream, Octopus.Client.Model.OverwriteMode, CancellationToken) + Task PushPackage(String, Stream, Octopus.Client.Model.OverwriteMode, Boolean, CancellationToken) } interface ICanExtendSpaceContext`1 { @@ -7365,8 +7363,8 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IFindByName Octopus.Client.Repositories.Async.IPaginate { - Task GetOctopusCertificate() - Task GetPublicCertificate(Octopus.Client.Model.CertificateConfigurationResource) + Task GetOctopusCertificate(CancellationToken) + Task GetPublicCertificate(Octopus.Client.Model.CertificateConfigurationResource, CancellationToken) } interface ICertificateRepository Octopus.Client.Repositories.Async.IResourceRepository @@ -7377,12 +7375,12 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task Archive(Octopus.Client.Model.CertificateResource) - Task Export(Octopus.Client.Model.CertificateResource, Nullable, String, Boolean) - Task ExportAsPem(Octopus.Client.Model.CertificateResource, Boolean, Octopus.Client.Model.CertificateExportPemOptions) - Task GetOctopusCertificate() - Task Replace(Octopus.Client.Model.CertificateResource, String, String) - Task UnArchive(Octopus.Client.Model.CertificateResource) + Task Archive(Octopus.Client.Model.CertificateResource, CancellationToken) + Task Export(Octopus.Client.Model.CertificateResource, Nullable, String, Boolean, CancellationToken) + Task ExportAsPem(Octopus.Client.Model.CertificateResource, Boolean, Octopus.Client.Model.CertificateExportPemOptions, CancellationToken) + Task GetOctopusCertificate(CancellationToken) + Task Replace(Octopus.Client.Model.CertificateResource, String, String, CancellationToken) + Task UnArchive(Octopus.Client.Model.CertificateResource, CancellationToken) } interface IChannelRepository Octopus.Client.Repositories.Async.ICreate @@ -7391,60 +7389,60 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IDelete Octopus.Client.Repositories.Async.IPaginate { - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String) - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String) - Task FindByName(Octopus.Client.Model.ProjectResource, String) - Task> GetAllReleases(Octopus.Client.Model.ChannelResource) - Task GetReleaseByVersion(Octopus.Client.Model.ChannelResource, String) - Task> GetReleases(Octopus.Client.Model.ChannelResource, Int32, Nullable, String) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String, CancellationToken) + Task FindByName(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task> GetAllReleases(Octopus.Client.Model.ChannelResource, CancellationToken) + Task GetReleaseByVersion(Octopus.Client.Model.ChannelResource, String, CancellationToken) + Task> GetReleases(Octopus.Client.Model.ChannelResource, Int32, Nullable, String, CancellationToken) } interface ICommunityActionTemplateRepository Octopus.Client.Repositories.Async.IGet { - Task GetInstalledTemplate(Octopus.Client.Model.CommunityActionTemplateResource) - Task Install(Octopus.Client.Model.CommunityActionTemplateResource) - Task UpdateInstallation(Octopus.Client.Model.CommunityActionTemplateResource) + Task GetInstalledTemplate(Octopus.Client.Model.CommunityActionTemplateResource, CancellationToken) + Task Install(Octopus.Client.Model.CommunityActionTemplateResource, CancellationToken) + Task UpdateInstallation(Octopus.Client.Model.CommunityActionTemplateResource, CancellationToken) } interface IConfigurationRepository { - Task Get() - Task Modify(Octopus.Client.Repositories.Async.T) + Task Get(CancellationToken) + Task Modify(Octopus.Client.Repositories.Async.T, CancellationToken) } interface ICreate`1 { - Task Create(Octopus.Client.Repositories.Async.TResource, Object) + Task Create(Octopus.Client.Repositories.Async.TResource, Object, CancellationToken) } interface IDashboardConfigurationRepository { - Task GetDashboardConfiguration() - Task ModifyDashboardConfiguration(Octopus.Client.Model.DashboardConfigurationResource) + Task GetDashboardConfiguration(CancellationToken) + Task ModifyDashboardConfiguration(Octopus.Client.Model.DashboardConfigurationResource, CancellationToken) } interface IDashboardRepository { - Task GetDashboard() - Task GetDynamicDashboard(String[], String[], Octopus.Client.Model.DashboardItemsOptions) + Task GetDashboard(CancellationToken) + Task GetDynamicDashboard(String[], String[], Octopus.Client.Model.DashboardItemsOptions, CancellationToken) } interface IDefectsRepository { - Task> GetDefects(Octopus.Client.Model.ReleaseResource) - Task RaiseDefect(Octopus.Client.Model.ReleaseResource, String) - Task ResolveDefect(Octopus.Client.Model.ReleaseResource) + Task> GetDefects(Octopus.Client.Model.ReleaseResource, CancellationToken) + Task RaiseDefect(Octopus.Client.Model.ReleaseResource, String, CancellationToken) + Task ResolveDefect(Octopus.Client.Model.ReleaseResource, CancellationToken) } interface IDelete`1 { - Task Delete(Octopus.Client.Repositories.Async.TResource) + Task Delete(Octopus.Client.Repositories.Async.TResource, CancellationToken) } interface IDeploymentProcessBetaRepository { - Task Get(Octopus.Client.Model.ProjectResource, String) - Task Modify(Octopus.Client.Model.ProjectResource, Octopus.Client.Model.DeploymentProcessResource, String) + Task Get(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task Modify(Octopus.Client.Model.ProjectResource, Octopus.Client.Model.DeploymentProcessResource, String, CancellationToken) } interface IDeploymentProcessRepository Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IModify { Octopus.Client.Repositories.Async.IDeploymentProcessBetaRepository Beta() - Task GetTemplate(Octopus.Client.Model.DeploymentProcessResource, Octopus.Client.Model.ChannelResource) + Task GetTemplate(Octopus.Client.Model.DeploymentProcessResource, Octopus.Client.Model.ChannelResource, CancellationToken) } interface IDeploymentRepository Octopus.Client.Repositories.Async.IGet @@ -7452,11 +7450,11 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IDelete { - Task> FindAll(String[], String[], Int32, Nullable) - Task> FindBy(String[], String[], Int32, Nullable) - Task GetTask(Octopus.Client.Model.DeploymentResource) - Task Paginate(String[], String[], Func, Boolean>) - Task Paginate(String[], String[], String[], Func, Boolean>) + Task> FindAll(String[], String[], Int32, Nullable, CancellationToken) + Task> FindBy(String[], String[], Int32, Nullable, CancellationToken) + Task GetTask(Octopus.Client.Model.DeploymentResource, CancellationToken) + Task Paginate(String[], String[], Func, Boolean>, CancellationToken) + Task Paginate(String[], String[], String[], Func, Boolean>, CancellationToken) } interface IEnvironmentRepository Octopus.Client.Repositories.Async.IFindByName @@ -7467,28 +7465,28 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IDelete Octopus.Client.Repositories.Async.IGetAll { - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task CreateOrModify(String, String, Boolean) - Task> GetMachines(Octopus.Client.Model.EnvironmentResource, Nullable, Nullable, String, String, Nullable, String, String, String, String) - Task Sort(String[]) - Task Summary(String, String, String, String, Nullable, String, String, String, String, Nullable) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task CreateOrModify(String, String, Boolean, CancellationToken) + Task> GetMachines(Octopus.Client.Model.EnvironmentResource, Nullable, Nullable, String, String, Nullable, String, String, String, String, CancellationToken) + Task Sort(String[], CancellationToken) + Task Summary(String, String, String, String, Nullable, String, String, String, String, Nullable, CancellationToken) } interface IEventRepository Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.ICanExtendSpaceContext { - Task> GetAgents() - Task> GetCategories() - Task> GetDocumentTypes() - Task> GetGroups() - Task> List(Int32, String, String, Boolean) - Task> List(Int32, Nullable, String, String, String, String, Boolean, String, String, String, String, String, String, String, String, Nullable, Nullable, String, String, String) + Task> GetAgents(CancellationToken) + Task> GetCategories(CancellationToken) + Task> GetDocumentTypes(CancellationToken) + Task> GetGroups(CancellationToken) + Task> List(Int32, String, String, Boolean, CancellationToken) + Task> List(Int32, Nullable, String, String, String, String, Boolean, String, String, String, String, String, String, String, String, Nullable, Nullable, String, String, String, CancellationToken) } interface IFeaturesConfigurationRepository { - Task GetFeaturesConfiguration() - Task ModifyFeaturesConfiguration(Octopus.Client.Model.FeaturesConfigurationResource) + Task GetFeaturesConfiguration(CancellationToken) + Task ModifyFeaturesConfiguration(Octopus.Client.Model.FeaturesConfigurationResource, CancellationToken) } interface IFeedRepository Octopus.Client.Repositories.Async.ICreate @@ -7498,31 +7496,31 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IFindByName Octopus.Client.Repositories.Async.IPaginate { - Task> GetVersions(Octopus.Client.Model.FeedResource, String[]) + Task> GetVersions(Octopus.Client.Model.FeedResource, String[], CancellationToken) } interface IFindByName`1 Octopus.Client.Repositories.Async.IPaginate { - Task FindByName(String, String, Object) - Task> FindByNames(IEnumerable, String, Object) + Task FindByName(String, String, Object, CancellationToken) + Task> FindByNames(IEnumerable, String, Object, CancellationToken) } interface IGetAll`1 { - Task> GetAll() + Task> GetAll(CancellationToken) } interface IGet`1 { - Task Get(String) - Task> Get(String[]) - Task Refresh(Octopus.Client.Repositories.Async.TResource) + Task Get(String, CancellationToken) + Task> Get(CancellationToken, String[]) + Task Refresh(Octopus.Client.Repositories.Async.TResource, CancellationToken) } interface IInterruptionRepository Octopus.Client.Repositories.Async.IGet { - Task GetResponsibleUser(Octopus.Client.Model.InterruptionResource) - Task> List(Int32, Nullable, Boolean, String) - Task Submit(Octopus.Client.Model.InterruptionResource) - Task TakeResponsibility(Octopus.Client.Model.InterruptionResource) + Task GetResponsibleUser(Octopus.Client.Model.InterruptionResource, CancellationToken) + Task> List(Int32, Nullable, Boolean, String, CancellationToken) + Task Submit(Octopus.Client.Model.InterruptionResource, CancellationToken) + Task TakeResponsibility(Octopus.Client.Model.InterruptionResource, CancellationToken) } interface ILibraryVariableSetRepository Octopus.Client.Repositories.Async.ICreate @@ -7532,14 +7530,14 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IFindByName Octopus.Client.Repositories.Async.IPaginate { - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) } interface ILicensesRepository { - Task GetCurrent() - Task GetStatus() - Task UpdateCurrent(Octopus.Client.Model.LicenseResource) + Task GetCurrent(CancellationToken) + Task GetStatus(CancellationToken) + Task UpdateCurrent(Octopus.Client.Model.LicenseResource, CancellationToken) } interface ILifecyclesRepository Octopus.Client.Repositories.Async.IGet @@ -7549,8 +7547,8 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IFindByName Octopus.Client.Repositories.Async.IPaginate { - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) } interface IMachinePolicyRepository Octopus.Client.Repositories.Async.IFindByName @@ -7560,8 +7558,8 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IDelete { - Task> GetMachines(Octopus.Client.Model.MachinePolicyResource) - Task GetTemplate() + Task> GetMachines(Octopus.Client.Model.MachinePolicyResource, CancellationToken) + Task GetTemplate(CancellationToken) } interface IMachineRepository Octopus.Client.Repositories.Async.IFindByName @@ -7571,28 +7569,28 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], Octopus.Client.Model.TenantResource[], Octopus.Client.Model.TagResource[], Nullable) - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[]) - Task Discover(String, Int32, Nullable) - Task Discover(Octopus.Client.Model.DiscoverMachineOptions) - Task> FindByThumbprint(String) - Task GetConnectionStatus(Octopus.Client.Model.MachineResource) - Task> GetTasks(Octopus.Client.Model.MachineResource) - Task> GetTasks(Octopus.Client.Model.MachineResource, Object) - Task> List(Int32, Nullable, String, String, String, String, Nullable, String, String, String, String, String) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], Octopus.Client.Model.TenantResource[], Octopus.Client.Model.TagResource[], Nullable, CancellationToken) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], CancellationToken) + Task Discover(String, Int32, Nullable, CancellationToken) + Task Discover(Octopus.Client.Model.DiscoverMachineOptions, CancellationToken) + Task> FindByThumbprint(String, CancellationToken) + Task GetConnectionStatus(Octopus.Client.Model.MachineResource, CancellationToken) + Task> GetTasks(Octopus.Client.Model.MachineResource, CancellationToken) + Task> GetTasks(Octopus.Client.Model.MachineResource, Object, CancellationToken) + Task> List(Int32, Nullable, String, String, String, String, Nullable, String, String, String, String, String, CancellationToken) } interface IMachineRoleRepository { - Task> GetAllRoleNames() + Task> GetAllRoleNames(CancellationToken) } interface IMigrationRepository { - Task Import(Octopus.Client.Model.Migrations.MigrationImportResource) - Task PartialExport(Octopus.Client.Model.Migrations.MigrationPartialExportResource) + Task Import(Octopus.Client.Model.Migrations.MigrationImportResource, CancellationToken) + Task PartialExport(Octopus.Client.Model.Migrations.MigrationPartialExportResource, CancellationToken) } interface IModify`1 { - Task Modify(Octopus.Client.Repositories.Async.TResource) + Task Modify(Octopus.Client.Repositories.Async.TResource, CancellationToken) } interface IOctopusServerNodeRepository Octopus.Client.Repositories.Async.IModify @@ -7601,8 +7599,8 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IFindByName Octopus.Client.Repositories.Async.IPaginate { - Task Details(Octopus.Client.Model.OctopusServerNodeResource) - Task Summary() + Task Details(Octopus.Client.Model.OctopusServerNodeResource, CancellationToken) + Task Summary(CancellationToken) } interface IOctopusSpaceAsyncBetaRepository { @@ -7610,26 +7608,26 @@ Octopus.Client.Repositories.Async } interface IPackageMetadataRepository { - Task Get(String) - Task Push(String, String, Octopus.Client.Model.PackageMetadata.OctopusPackageMetadata, Octopus.Client.Model.OverwriteMode) - Task Push(String, String, Octopus.Client.Model.PackageMetadata.OctopusPackageMetadata, Boolean) + Task Get(String, CancellationToken) + Task Push(String, String, Octopus.Client.Model.PackageMetadata.OctopusPackageMetadata, Octopus.Client.Model.OverwriteMode, CancellationToken) + Task Push(String, String, Octopus.Client.Model.PackageMetadata.OctopusPackageMetadata, Boolean, CancellationToken) } interface IPaginate`1 { - Task> FindAll(String, Object) - Task> FindMany(Func, String, Object) - Task FindOne(Func, String, Object) - Task Paginate(Func, Boolean>, String, Object) + Task> FindAll(String, Object, CancellationToken) + Task> FindMany(Func, String, Object, CancellationToken) + Task FindOne(Func, String, Object, CancellationToken) + Task Paginate(Func, Boolean>, String, Object, CancellationToken) } interface IPerformanceConfigurationRepository { - Task Get() - Task Modify(Octopus.Client.Model.PerformanceConfigurationResource) + Task Get(CancellationToken) + Task Modify(Octopus.Client.Model.PerformanceConfigurationResource, CancellationToken) } interface IProjectBetaRepository { - Task GetVersionControlledBranch(Octopus.Client.Model.ProjectResource, String) - Task GetVersionControlledBranches(Octopus.Client.Model.ProjectResource) + Task GetVersionControlledBranch(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task GetVersionControlledBranches(Octopus.Client.Model.ProjectResource, CancellationToken) } interface IProjectGroupRepository Octopus.Client.Repositories.Async.IFindByName @@ -7640,9 +7638,9 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IDelete Octopus.Client.Repositories.Async.IGetAll { - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task> GetProjects(Octopus.Client.Model.ProjectGroupResource) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task> GetProjects(Octopus.Client.Model.ProjectGroupResource, CancellationToken) } interface IProjectRepository Octopus.Client.Repositories.Async.IFindByName @@ -7654,22 +7652,22 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IGetAll { Octopus.Client.Repositories.Async.IProjectBetaRepository Beta() - Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource) - Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, String, String) - Task> GetAllChannels(Octopus.Client.Model.ProjectResource) - Task> GetAllReleases(Octopus.Client.Model.ProjectResource) - Task> GetAllRunbooks(Octopus.Client.Model.ProjectResource) - Task> GetAllRunbookSnapshots(Octopus.Client.Model.ProjectResource) - Task> GetAllTriggers(Octopus.Client.Model.ProjectResource) - Task> GetChannels(Octopus.Client.Model.ProjectResource) - Task GetProgression(Octopus.Client.Model.ProjectResource) - Task GetReleaseByVersion(Octopus.Client.Model.ProjectResource, String) - Task> GetReleases(Octopus.Client.Model.ProjectResource, Int32, Nullable, String) - Task> GetRunbooks(Octopus.Client.Model.ProjectResource, Int32, Nullable, String) - Task GetRunbookSnapshotByName(Octopus.Client.Model.ProjectResource, String) - Task> GetRunbookSnapshots(Octopus.Client.Model.ProjectResource, Int32, Nullable, String) - Task> GetTriggers(Octopus.Client.Model.ProjectResource) - Task SetLogo(Octopus.Client.Model.ProjectResource, String, Stream) + Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, CancellationToken) + Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, String, String, CancellationToken) + Task> GetAllChannels(Octopus.Client.Model.ProjectResource, CancellationToken) + Task> GetAllReleases(Octopus.Client.Model.ProjectResource, CancellationToken) + Task> GetAllRunbooks(Octopus.Client.Model.ProjectResource, CancellationToken) + Task> GetAllRunbookSnapshots(Octopus.Client.Model.ProjectResource, CancellationToken) + Task> GetAllTriggers(Octopus.Client.Model.ProjectResource, CancellationToken) + Task> GetChannels(Octopus.Client.Model.ProjectResource, CancellationToken) + Task GetProgression(Octopus.Client.Model.ProjectResource, CancellationToken) + Task GetReleaseByVersion(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task> GetReleases(Octopus.Client.Model.ProjectResource, Int32, Nullable, String, CancellationToken) + Task> GetRunbooks(Octopus.Client.Model.ProjectResource, Int32, Nullable, String, CancellationToken) + Task GetRunbookSnapshotByName(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task> GetRunbookSnapshots(Octopus.Client.Model.ProjectResource, Int32, Nullable, String, CancellationToken) + Task> GetTriggers(Octopus.Client.Model.ProjectResource, CancellationToken) + Task SetLogo(Octopus.Client.Model.ProjectResource, String, Stream, CancellationToken) } interface IProjectTriggerRepository Octopus.Client.Repositories.Async.ICreate @@ -7677,9 +7675,9 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IDelete { - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource) - Task FindByName(Octopus.Client.Model.ProjectResource, String) - Task> FindByRunbook(String[]) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource, CancellationToken) + Task FindByName(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task> FindByRunbook(CancellationToken, String[]) } interface IProxyRepository Octopus.Client.Repositories.Async.IGet @@ -7697,13 +7695,13 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task Create(Octopus.Client.Model.ReleaseResource, Boolean) - Task> GetArtifacts(Octopus.Client.Model.ReleaseResource, Int32, Nullable) - Task> GetDeployments(Octopus.Client.Model.ReleaseResource, Int32, Nullable) - Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget) - Task GetProgression(Octopus.Client.Model.ReleaseResource) - Task GetTemplate(Octopus.Client.Model.ReleaseResource) - Task SnapshotVariables(Octopus.Client.Model.ReleaseResource) + Task Create(Octopus.Client.Model.ReleaseResource, Boolean, CancellationToken) + Task> GetArtifacts(Octopus.Client.Model.ReleaseResource, Int32, Nullable, CancellationToken) + Task> GetDeployments(Octopus.Client.Model.ReleaseResource, Int32, Nullable, CancellationToken) + Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget, CancellationToken) + Task GetProgression(Octopus.Client.Model.ReleaseResource, CancellationToken) + Task GetTemplate(Octopus.Client.Model.ReleaseResource, CancellationToken) + Task SnapshotVariables(Octopus.Client.Model.ReleaseResource, CancellationToken) } interface IResourceRepository { @@ -7711,13 +7709,13 @@ Octopus.Client.Repositories.Async } interface IRetentionPolicyRepository { - Task ApplyNow(String) + Task ApplyNow(String, CancellationToken) } interface IRunbookProcessRepository Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IModify { - Task GetTemplate(Octopus.Client.Model.RunbookProcessResource) + Task GetTemplate(Octopus.Client.Model.RunbookProcessResource, CancellationToken) } interface IRunbookRepository Octopus.Client.Repositories.Async.IFindByName @@ -7727,13 +7725,13 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String) - Task FindByName(Octopus.Client.Model.ProjectResource, String) - Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget) - Task GetRunbookRunTemplate(Octopus.Client.Model.RunbookResource) - Task GetRunbookSnapshotTemplate(Octopus.Client.Model.RunbookResource) - Task Run(Octopus.Client.Model.RunbookResource, Octopus.Client.Model.RunbookRunResource) - Task Run(Octopus.Client.Model.RunbookResource, Octopus.Client.Model.RunbookRunParameters) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String, CancellationToken) + Task FindByName(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget, CancellationToken) + Task GetRunbookRunTemplate(Octopus.Client.Model.RunbookResource, CancellationToken) + Task GetRunbookSnapshotTemplate(Octopus.Client.Model.RunbookResource, CancellationToken) + Task Run(Octopus.Client.Model.RunbookResource, Octopus.Client.Model.RunbookRunResource, CancellationToken) + Task Run(Octopus.Client.Model.RunbookResource, Octopus.Client.Model.RunbookRunParameters, CancellationToken) } interface IRunbookRunRepository Octopus.Client.Repositories.Async.IGet @@ -7741,10 +7739,10 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IDelete { - Task> FindBy(String[], String[], String[], Int32, Nullable) - Task GetTask(Octopus.Client.Model.RunbookRunResource) - Task Paginate(String[], String[], String[], Func, Boolean>) - Task Paginate(String[], String[], String[], String[], Func, Boolean>) + Task> FindBy(String[], String[], String[], Int32, Nullable, CancellationToken) + Task GetTask(Octopus.Client.Model.RunbookRunResource, CancellationToken) + Task Paginate(String[], String[], String[], Func, Boolean>, CancellationToken) + Task Paginate(String[], String[], String[], String[], Func, Boolean>, CancellationToken) } interface IRunbookSnapshotRepository Octopus.Client.Repositories.Async.IGet @@ -7753,23 +7751,23 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task Create(Octopus.Client.Model.RunbookSnapshotResource) - Task> GetArtifacts(Octopus.Client.Model.RunbookSnapshotResource, Int32, Nullable) - Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget) - Task> GetRunbookRuns(Octopus.Client.Model.RunbookSnapshotResource, Int32, Nullable) - Task GetTemplate(Octopus.Client.Model.RunbookSnapshotResource) - Task SnapshotVariables(Octopus.Client.Model.RunbookSnapshotResource) + Task Create(Octopus.Client.Model.RunbookSnapshotResource, CancellationToken) + Task> GetArtifacts(Octopus.Client.Model.RunbookSnapshotResource, Int32, Nullable, CancellationToken) + Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget, CancellationToken) + Task> GetRunbookRuns(Octopus.Client.Model.RunbookSnapshotResource, Int32, Nullable, CancellationToken) + Task GetTemplate(Octopus.Client.Model.RunbookSnapshotResource, CancellationToken) + Task SnapshotVariables(Octopus.Client.Model.RunbookSnapshotResource, CancellationToken) } interface ISchedulerRepository { - Task GetLogs(String) - Task GetRawLogs(String) - Task Start() - Task Start(String) - Task Status() - Task Stop() - Task Stop(String) - Task Trigger(String) + Task GetLogs(String, CancellationToken) + Task GetRawLogs(String, CancellationToken) + Task Start(CancellationToken) + Task Start(String, CancellationToken) + Task Status(CancellationToken) + Task Stop(CancellationToken) + Task Stop(String, CancellationToken) + Task Trigger(String, CancellationToken) } interface IScopedUserRoleRepository Octopus.Client.Repositories.Async.ICreate @@ -7781,9 +7779,9 @@ Octopus.Client.Repositories.Async } interface IServerStatusRepository { - Task GetServerHealth() - Task GetServerStatus() - Task GetSystemInfo(Octopus.Client.Model.ServerStatusResource) + Task GetServerHealth(CancellationToken) + Task GetServerStatus(CancellationToken) + Task GetSystemInfo(Octopus.Client.Model.ServerStatusResource, CancellationToken) } interface ISpaceRepository Octopus.Client.Repositories.Async.ICreate @@ -7793,7 +7791,7 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IGet { - Task SetLogo(Octopus.Client.Model.SpaceResource, String, Stream) + Task SetLogo(Octopus.Client.Model.SpaceResource, String, Stream, CancellationToken) } interface ISubscriptionRepository Octopus.Client.Repositories.Async.IFindByName @@ -7803,7 +7801,7 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IDelete { - Task CreateOrModify(String, Octopus.Client.Model.EventNotificationSubscription, Boolean) + Task CreateOrModify(String, Octopus.Client.Model.EventNotificationSubscription, Boolean, CancellationToken) } interface ITagSetRepository Octopus.Client.Repositories.Async.ICreate @@ -7814,9 +7812,9 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IGetAll { - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task Sort(String[]) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task Sort(String[], CancellationToken) } interface ITaskRepository Octopus.Client.Repositories.Async.IPaginate @@ -7824,27 +7822,27 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.ICreate Octopus.Client.Repositories.Async.ICanExtendSpaceContext { - Task Cancel(Octopus.Client.Model.TaskResource) - Task ExecuteActionTemplate(Octopus.Client.Model.ActionTemplateResource, Dictionary, String[], String[], String[], String, Nullable) - Task ExecuteAdHocScript(String, String[], String[], String[], String, String, Nullable) - Task ExecuteBackup(String) - Task ExecuteCalamariUpdate(String, String[]) - Task ExecuteCommunityActionTemplatesSynchronisation(String) - Task ExecuteHealthCheck(String, Int32, Int32, String, String[], String, String, String[]) - Task ExecuteTentacleUpgrade(String, String, String[], String, String, String[]) - Task GetActiveWithSummary(Int32, Int32) - Task> GetAllActive(Int32) - Task GetAllWithSummary(Int32, Int32) - Task GetDetails(Octopus.Client.Model.TaskResource, Nullable, Nullable) - Task> GetQueuedBehindTasks(Octopus.Client.Model.TaskResource) - Task GetRawOutputLog(Octopus.Client.Model.TaskResource) - Task GetTaskTypes() - Task ModifyState(Octopus.Client.Model.TaskResource, Octopus.Client.Model.TaskState, String) - Task Rerun(Octopus.Client.Model.TaskResource) - Task WaitForCompletion(Octopus.Client.Model.TaskResource, Int32, Int32, Action) - Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Int32, Action) - Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Int32, Func) - Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Nullable, Func) + Task Cancel(Octopus.Client.Model.TaskResource, CancellationToken) + Task ExecuteActionTemplate(Octopus.Client.Model.ActionTemplateResource, Dictionary, String[], String[], String[], String, Nullable, CancellationToken) + Task ExecuteAdHocScript(String, String[], String[], String[], String, String, Nullable, CancellationToken) + Task ExecuteBackup(String, CancellationToken) + Task ExecuteCalamariUpdate(String, String[], CancellationToken) + Task ExecuteCommunityActionTemplatesSynchronisation(String, CancellationToken) + Task ExecuteHealthCheck(String, Int32, Int32, String, String[], String, String, String[], CancellationToken) + Task ExecuteTentacleUpgrade(String, String, String[], String, String, String[], CancellationToken) + Task GetActiveWithSummary(Int32, Int32, CancellationToken) + Task> GetAllActive(Int32, CancellationToken) + Task GetAllWithSummary(Int32, Int32, CancellationToken) + Task GetDetails(Octopus.Client.Model.TaskResource, Nullable, Nullable, CancellationToken) + Task> GetQueuedBehindTasks(Octopus.Client.Model.TaskResource, CancellationToken) + Task GetRawOutputLog(Octopus.Client.Model.TaskResource, CancellationToken) + Task GetTaskTypes(CancellationToken) + Task ModifyState(Octopus.Client.Model.TaskResource, Octopus.Client.Model.TaskState, String, CancellationToken) + Task Rerun(Octopus.Client.Model.TaskResource, CancellationToken) + Task WaitForCompletion(Octopus.Client.Model.TaskResource, Int32, Int32, Action, CancellationToken) + Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Int32, Action, CancellationToken) + Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Int32, Func, CancellationToken) + Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Nullable, Func, CancellationToken) } interface ITeamsRepository Octopus.Client.Repositories.Async.ICreate @@ -7855,7 +7853,7 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.ICanExtendSpaceContext { - Task> GetScopedUserRoles(Octopus.Client.Model.TeamResource) + Task> GetScopedUserRoles(Octopus.Client.Model.TeamResource, CancellationToken) } interface ITenantRepository Octopus.Client.Repositories.Async.ICreate @@ -7866,38 +7864,38 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IGetAll { - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task CreateOrModify(String, String, String) - Task> FindAll(String, String[], Int32) - Task> GetMissingVariables(String, String, String) - Task GetVariables(Octopus.Client.Model.TenantResource) - Task ModifyVariables(Octopus.Client.Model.TenantResource, Octopus.Client.Model.TenantVariableResource) - Task SetLogo(Octopus.Client.Model.TenantResource, String, Stream) - Task Status() + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task CreateOrModify(String, String, String, CancellationToken) + Task> FindAll(String, String[], Int32, CancellationToken) + Task> GetMissingVariables(String, String, String, CancellationToken) + Task GetVariables(Octopus.Client.Model.TenantResource, CancellationToken) + Task ModifyVariables(Octopus.Client.Model.TenantResource, Octopus.Client.Model.TenantVariableResource, CancellationToken) + Task SetLogo(Octopus.Client.Model.TenantResource, String, Stream, CancellationToken) + Task Status(CancellationToken) } interface ITenantVariablesRepository Octopus.Client.Repositories.Async.IGetAll { - Task> GetAll(Octopus.Client.Model.ProjectResource) + Task> GetAll(Octopus.Client.Model.ProjectResource, CancellationToken) } interface IUpgradeConfigurationRepository Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IModify { - Task Get() + Task Get(CancellationToken) } interface IUserInvitesRepository { - Task Invite(String) - Task Invite(Octopus.Client.Model.ReferenceCollection) + Task Invite(String, CancellationToken) + Task Invite(Octopus.Client.Model.ReferenceCollection, CancellationToken) } interface IUserPermissionsRepository Octopus.Client.Repositories.Async.ICanExtendSpaceContext { - Task Export(Octopus.Client.Model.UserPermissionSetResource) - Task Get(Octopus.Client.Model.UserResource) - Task GetConfiguration(Octopus.Client.Model.UserResource) + Task Export(Octopus.Client.Model.UserPermissionSetResource, CancellationToken) + Task Get(Octopus.Client.Model.UserResource, CancellationToken) + Task GetConfiguration(Octopus.Client.Model.UserResource, CancellationToken) } interface IUserRepository Octopus.Client.Repositories.Async.IPaginate @@ -7906,20 +7904,20 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IDelete Octopus.Client.Repositories.Async.ICreate { - Task Create(String, String, String, String) - Task CreateApiKey(Octopus.Client.Model.UserResource, String) - Task CreateServiceAccount(String, String) - Task FindByUsername(String) - Task> GetApiKeys(Octopus.Client.Model.UserResource) - Task GetCurrent() - Task GetSpaces(Octopus.Client.Model.UserResource) - Task Invite(String) - Task Invite(Octopus.Client.Model.ReferenceCollection) - Task Register(Octopus.Client.Model.RegisterCommand) - Task RevokeApiKey(Octopus.Client.Model.ApiKeyResource) - Task SignIn(Octopus.Client.Model.LoginCommand) - Task SignIn(String, String, Boolean) - Task SignOut() + Task Create(String, String, String, String, CancellationToken) + Task CreateApiKey(Octopus.Client.Model.UserResource, String, CancellationToken) + Task CreateServiceAccount(String, String, CancellationToken) + Task FindByUsername(String, CancellationToken) + Task> GetApiKeys(Octopus.Client.Model.UserResource, CancellationToken) + Task GetCurrent(CancellationToken) + Task GetSpaces(Octopus.Client.Model.UserResource, CancellationToken) + Task Invite(String, CancellationToken) + Task Invite(Octopus.Client.Model.ReferenceCollection, CancellationToken) + Task Register(Octopus.Client.Model.RegisterCommand, CancellationToken) + Task RevokeApiKey(Octopus.Client.Model.ApiKeyResource, CancellationToken) + Task SignIn(Octopus.Client.Model.LoginCommand, CancellationToken) + Task SignIn(String, String, Boolean, CancellationToken) + Task SignOut(CancellationToken) } interface IUserRolesRepository Octopus.Client.Repositories.Async.IFindByName @@ -7933,23 +7931,23 @@ Octopus.Client.Repositories.Async interface IUserTeamsRepository Octopus.Client.Repositories.Async.ICanExtendSpaceContext { - Task Get(Octopus.Client.Model.UserResource) + Task Get(Octopus.Client.Model.UserResource, CancellationToken) } interface IVariableSetRepository Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IGetAll { - Task GetVariableNames(String, String[]) - Task GetVariablePreview(String, String, String, String, String, String, String, String) + Task GetVariableNames(String, String[], CancellationToken) + Task GetVariablePreview(String, String, String, String, String, String, String, String, CancellationToken) } interface IVcsRunbookRepository { - Task Create(Octopus.Client.Model.VcsRunbookResource, String) - Task Delete(Octopus.Client.Model.VcsRunbookResource, String) - Task Get(String) - Task> List(String, Int32, Nullable) - Task Modify(Octopus.Client.Model.VcsRunbookResource, String) + Task Create(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) + Task Delete(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) + Task Get(String, CancellationToken) + Task> List(String, Int32, Nullable, CancellationToken) + Task Modify(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) } interface IWorkerPoolRepository Octopus.Client.Repositories.Async.IFindByName @@ -7960,11 +7958,11 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IDelete Octopus.Client.Repositories.Async.IGetAll { - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task> GetMachines(Octopus.Client.Model.WorkerPoolResource, Nullable, Nullable, String, Nullable, String, String) - Task Sort(String[]) - Task Summary(String, String, String, Nullable, String, String, Nullable) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task> GetMachines(Octopus.Client.Model.WorkerPoolResource, Nullable, Nullable, String, Nullable, String, String, CancellationToken) + Task Sort(String[], CancellationToken) + Task Summary(String, String, String, Nullable, String, String, Nullable, CancellationToken) } interface IWorkerRepository Octopus.Client.Repositories.Async.IFindByName @@ -7974,11 +7972,11 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.WorkerPoolResource[]) - Task Discover(String, Int32, Nullable) - Task> FindByThumbprint(String) - Task GetConnectionStatus(Octopus.Client.Model.WorkerResource) - Task> List(Int32, Nullable, String, String, String, Nullable, String, String, String) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.WorkerPoolResource[], CancellationToken) + Task Discover(String, Int32, Nullable, CancellationToken) + Task> FindByThumbprint(String, CancellationToken) + Task GetConnectionStatus(Octopus.Client.Model.WorkerResource, CancellationToken) + Task> List(Int32, Nullable, String, String, String, Nullable, String, String, String, CancellationToken) } class OctopusSpaceAsyncBetaRepository Octopus.Client.Repositories.Async.IOctopusSpaceAsyncBetaRepository @@ -7996,11 +7994,11 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IVcsRunbookRepository { .ctor(Octopus.Client.IOctopusAsyncRepository, Octopus.Client.Model.VersionControlBranchResource) - Task Create(Octopus.Client.Model.VcsRunbookResource, String) - Task Delete(Octopus.Client.Model.VcsRunbookResource, String) - Task Get(String) - Task> List(String, Int32, Nullable) - Task Modify(Octopus.Client.Model.VcsRunbookResource, String) + Task Create(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) + Task Delete(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) + Task Get(String, CancellationToken) + Task> List(String, Int32, Nullable, CancellationToken) + Task Modify(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) } } Octopus.Client.Serialization From ccbe87b2ded6aaf4101291cd46725775d25a40b8 Mon Sep 17 00:00:00 2001 From: yj7o5 Date: Sat, 10 Oct 2020 00:15:44 -0500 Subject: [PATCH 09/10] Update netframework approval file --- ...houldNotRegress..NETFramework.approved.txt | 776 +++++++++--------- 1 file changed, 387 insertions(+), 389 deletions(-) diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt index 16402440d..a713f3698 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt @@ -30,27 +30,26 @@ Octopus.Client Boolean IsUsingSecureConnection { get; } Octopus.Client.IOctopusAsyncRepository Repository { get; } Octopus.Client.Model.RootResource RootDocument { get; } - Task Create(String, Octopus.Client.TResource, Object) - Task Delete(String, Object, Object) + Task Create(String, Octopus.Client.TResource, Object, CancellationToken) + Task Delete(String, Object, Object, CancellationToken) Octopus.Client.IOctopusSpaceAsyncRepository ForSpace(Octopus.Client.Model.SpaceResource) Octopus.Client.IOctopusSystemAsyncRepository ForSystem() - Task Get(String, Object) - Task GetContent(String, Object) - Task> List(String, Object) - Task> ListAll(String, Object) - Task Paginate(String, Func, Boolean>) - Task Paginate(String, Object, Func, Boolean>) - Task Post(String, Octopus.Client.TResource, Object) - Task Post(String, Octopus.Client.TResource, Object) - Task Post(String) - Task Put(String, Octopus.Client.TResource) - Task Put(String) - Task Put(String, Octopus.Client.TResource, Object) - Task PutContent(String, Stream) + Task Get(String, Object, CancellationToken) + Task GetContent(String, Object, CancellationToken) + Task> List(String, Object, CancellationToken) + Task> ListAll(String, Object, CancellationToken) + Task Paginate(String, Func, Boolean>, CancellationToken) + Task Paginate(String, Object, Func, Boolean>, CancellationToken) + Task Post(String, Octopus.Client.TResource, Object, CancellationToken) + Task Post(String, Octopus.Client.TResource, Object, CancellationToken) + Task Post(String, CancellationToken) + Task Put(String, CancellationToken) + Task Put(String, Octopus.Client.TResource, Object, CancellationToken) + Task PutContent(String, Stream, CancellationToken) Uri QualifyUri(String, Object) - Task SignIn(Octopus.Client.Model.LoginCommand) - Task SignOut() - Task Update(String, Octopus.Client.TResource, Object) + Task SignIn(Octopus.Client.Model.LoginCommand, CancellationToken) + Task SignOut(CancellationToken) + Task Update(String, Octopus.Client.TResource, Object, CancellationToken) } interface IOctopusAsyncRepository Octopus.Client.IOctopusSpaceAsyncRepository @@ -269,28 +268,27 @@ Octopus.Client Octopus.Client.IOctopusAsyncRepository Repository { get; } Octopus.Client.Model.RootResource RootDocument { get; } static Task Create(Octopus.Client.OctopusServerEndpoint, Octopus.Client.OctopusClientOptions) - Task Create(String, Octopus.Client.TResource, Object) - Task Delete(String, Object, Object) + Task Create(String, Octopus.Client.TResource, Object, CancellationToken) + Task Delete(String, Object, Object, CancellationToken) void Dispose() Octopus.Client.IOctopusSpaceAsyncRepository ForSpace(Octopus.Client.Model.SpaceResource) Octopus.Client.IOctopusSystemAsyncRepository ForSystem() - Task Get(String, Object) - Task GetContent(String, Object) - Task> List(String, Object) - Task> ListAll(String, Object) - Task Paginate(String, Object, Func, Boolean>) - Task Paginate(String, Func, Boolean>) - Task Post(String, Octopus.Client.TResource, Object) - Task Post(String, Octopus.Client.TResource, Object) - Task Post(String) - Task Put(String, Octopus.Client.TResource) - Task Put(String) - Task Put(String, Octopus.Client.TResource, Object) - Task PutContent(String, Stream) + Task Get(String, Object, CancellationToken) + Task GetContent(String, Object, CancellationToken) + Task> List(String, Object, CancellationToken) + Task> ListAll(String, Object, CancellationToken) + Task Paginate(String, Object, Func, Boolean>, CancellationToken) + Task Paginate(String, Func, Boolean>, CancellationToken) + Task Post(String, Octopus.Client.TResource, Object, CancellationToken) + Task Post(String, Octopus.Client.TResource, Object, CancellationToken) + Task Post(String, CancellationToken) + Task Put(String, CancellationToken) + Task Put(String, Octopus.Client.TResource, Object, CancellationToken) + Task PutContent(String, Stream, CancellationToken) Uri QualifyUri(String, Object) - Task SignIn(Octopus.Client.Model.LoginCommand) - Task SignOut() - Task Update(String, Octopus.Client.TResource, Object) + Task SignIn(Octopus.Client.Model.LoginCommand, CancellationToken) + Task SignOut(CancellationToken) + Task Update(String, Octopus.Client.TResource, Object, CancellationToken) } class OctopusAsyncRepository Octopus.Client.IOctopusAsyncRepository @@ -967,11 +965,11 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IAccountRepository) Octopus.Client.Editors.Async.TAccountResource Instance { get; } - Task CreateOrModify(String) + Task CreateOrModify(String, CancellationToken) Octopus.Client.Editors.Async.TAccountEditor Customize(Action) - Task FindByName(String) - Task Save() - Task Usages() + Task FindByName(String, CancellationToken) + Task Save(CancellationToken) + Task Usages(CancellationToken) } class AmazonWebServicesAccountEditor Octopus.Client.Editors.Async.IResourceEditor @@ -986,10 +984,10 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.AccountEditor { .ctor(Octopus.Client.Repositories.Async.IAccountRepository) - Task> ResourceGroups() - Task> StorageAccounts() - Task> WebSites() - Task> WebSlots(Octopus.Client.Model.Accounts.WebSite) + Task> ResourceGroups(CancellationToken) + Task> StorageAccounts(CancellationToken) + Task> WebSites(CancellationToken) + Task> WebSlots(Octopus.Client.Model.Accounts.WebSite, CancellationToken) } class AzureSubscriptionAccountEditor Octopus.Client.Editors.Async.IResourceEditor @@ -997,11 +995,11 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.AccountEditor { .ctor(Octopus.Client.Repositories.Async.IAccountRepository) - Task> StorageAccounts(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource) - Task> WebSites(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource) - Task> WebSites() - Task> WebSlots(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource, Octopus.Client.Model.Accounts.WebSite) - Task> WebSlots(Octopus.Client.Model.Accounts.WebSite) + Task> StorageAccounts(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource, CancellationToken) + Task> WebSites(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource, CancellationToken) + Task> WebSites(CancellationToken) + Task> WebSlots(Octopus.Client.Model.Accounts.AzureSubscriptionAccountResource, Octopus.Client.Model.Accounts.WebSite, CancellationToken) + Task> WebSlots(Octopus.Client.Model.Accounts.WebSite, CancellationToken) } class CertificateEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1009,11 +1007,11 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.ICertificateRepository) Octopus.Client.Model.CertificateResource Instance { get; } - Task Create(String, String) + Task Create(String, String, CancellationToken) Octopus.Client.Editors.Async.CertificateEditor Customize(Action) - Task FindByName(String) - Task Save() - Task Usages() + Task FindByName(String, CancellationToken) + Task Save(CancellationToken) + Task Usages(CancellationToken) } class ChannelEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1027,10 +1025,10 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.ChannelEditor AddRule(String, String, Octopus.Client.Model.DeploymentActionResource[]) Octopus.Client.Editors.Async.ChannelEditor ClearRules() Octopus.Client.Editors.Async.ChannelEditor ClearTenantTags() - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String) - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String, CancellationToken) Octopus.Client.Editors.Async.ChannelEditor Customize(Action) - Task Save() + Task Save(CancellationToken) Octopus.Client.Editors.Async.ChannelEditor SetAsDefaultChannel() Octopus.Client.Editors.Async.ChannelEditor UsingLifecycle(Octopus.Client.Model.LifecycleResource) } @@ -1044,9 +1042,9 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.DeploymentProcessEditor ClearSteps() Octopus.Client.Editors.Async.DeploymentProcessEditor Customize(Action) Octopus.Client.Model.DeploymentStepResource FindStep(String) - Task Load(String) + Task Load(String, CancellationToken) Octopus.Client.Editors.Async.DeploymentProcessEditor RemoveStep(String) - Task Save() + Task Save(CancellationToken) } class EnvironmentEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1054,11 +1052,11 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IEnvironmentRepository) Octopus.Client.Model.EnvironmentResource Instance { get; } - Task CreateOrModify(String) - Task CreateOrModify(String, String, Boolean) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, Boolean, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.EnvironmentEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } interface IResourceBuilder { @@ -1068,7 +1066,7 @@ Octopus.Client.Editors.Async { Octopus.Client.Editors.Async.TResource Instance { get; } Octopus.Client.Editors.Async.TResourceBuilder Customize(Action) - Task Save() + Task Save(CancellationToken) } class LibraryVariableSetEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1078,10 +1076,10 @@ Octopus.Client.Editors.Async Octopus.Client.Model.LibraryVariableSetResource Instance { get; } Task Variables { get; } Octopus.Client.Model.IVariableTemplateContainerEditor VariableTemplates { get; } - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.LibraryVariableSetEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class LifecycleEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1092,10 +1090,10 @@ Octopus.Client.Editors.Async Octopus.Client.Model.PhaseResource AddOrUpdatePhase(String) Octopus.Client.Editors.Async.LifecycleEditor AsSimplePromotionLifecycle(IEnumerable) Octopus.Client.Editors.Async.LifecycleEditor Clear() - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.LifecycleEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class MachineEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1103,18 +1101,18 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IMachineRepository) Octopus.Client.Model.MachineResource Instance { get; } - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[]) - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], Octopus.Client.Model.TenantResource[], Octopus.Client.Model.TagResource[], Nullable) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], CancellationToken) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], Octopus.Client.Model.TenantResource[], Octopus.Client.Model.TagResource[], Nullable, CancellationToken) Octopus.Client.Editors.Async.MachineEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class ProjectChannelsEditor { .ctor(Octopus.Client.Repositories.Async.IChannelRepository, Octopus.Client.Model.ProjectResource) - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task Delete(String) - Task SaveAll() + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task Delete(String, CancellationToken) + Task SaveAll(CancellationToken) } class ProjectEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1127,12 +1125,12 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.ProjectTriggersEditor Triggers { get; } Task Variables { get; } Octopus.Client.Model.IVariableTemplateContainerEditor VariableTemplates { get; } - Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource) - Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, String, String) + Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, CancellationToken) + Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, String, String, CancellationToken) Octopus.Client.Editors.Async.ProjectEditor Customize(Action) Octopus.Client.Editors.Async.ProjectEditor IncludingLibraryVariableSets(Octopus.Client.Model.LibraryVariableSetResource[]) - Task Save() - Task SetLogo(String) + Task Save(CancellationToken) + Task SetLogo(String, CancellationToken) } class ProjectGroupEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1140,10 +1138,10 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IProjectGroupRepository) Octopus.Client.Model.ProjectGroupResource Instance { get; } - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.ProjectGroupEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class ProjectTriggerEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1151,16 +1149,16 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IProjectTriggerRepository) Octopus.Client.Model.ProjectTriggerResource Instance { get; } - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource, CancellationToken) Octopus.Client.Editors.Async.ProjectTriggerEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class ProjectTriggersEditor { .ctor(Octopus.Client.Repositories.Async.IProjectTriggerRepository, Octopus.Client.Model.ProjectResource) - Task CreateOrModify(String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource) - Task Delete(String) - Task SaveAll() + Task CreateOrModify(String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource, CancellationToken) + Task Delete(String, CancellationToken) + Task SaveAll(CancellationToken) } class RunbookEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1169,10 +1167,10 @@ Octopus.Client.Editors.Async .ctor(Octopus.Client.Repositories.Async.IRunbookRepository, Octopus.Client.Repositories.Async.IRunbookProcessRepository) Octopus.Client.Model.RunbookResource Instance { get; } Task RunbookProcess { get; } - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String, CancellationToken) Octopus.Client.Editors.Async.RunbookEditor Customize(Action) - Task Load(String) - Task Save() + Task Load(String, CancellationToken) + Task Save(CancellationToken) } class RunbookProcessEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1184,9 +1182,9 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.RunbookProcessEditor ClearSteps() Octopus.Client.Editors.Async.RunbookProcessEditor Customize(Action) Octopus.Client.Model.DeploymentStepResource FindStep(String) - Task Load(String) + Task Load(String, CancellationToken) Octopus.Client.Editors.Async.RunbookProcessEditor RemoveStep(String) - Task Save() + Task Save(CancellationToken) } class SshKeyPairAccountEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1201,9 +1199,9 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.ISubscriptionRepository) Octopus.Client.Model.SubscriptionResource Instance { get; } - Task CreateOrModify(String, Octopus.Client.Model.EventNotificationSubscription, Boolean) + Task CreateOrModify(String, Octopus.Client.Model.EventNotificationSubscription, Boolean, CancellationToken) Octopus.Client.Editors.Async.SubscriptionEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class TagSetEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1213,11 +1211,11 @@ Octopus.Client.Editors.Async Octopus.Client.Model.TagSetResource Instance { get; } Octopus.Client.Editors.Async.TagSetEditor AddOrUpdateTag(String, String, String) Octopus.Client.Editors.Async.TagSetEditor ClearTags() - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.TagSetEditor Customize(Action) Octopus.Client.Editors.Async.TagSetEditor RemoveTag(String) - Task Save() + Task Save(CancellationToken) } class TenantEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1229,11 +1227,11 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.TenantEditor ClearProjects() Octopus.Client.Editors.Async.TenantEditor ClearTags() Octopus.Client.Editors.Async.TenantEditor ConnectToProjectAndEnvironments(Octopus.Client.Model.ProjectResource, Octopus.Client.Model.EnvironmentResource[]) - Task CreateOrModify(String) - Task CreateOrModify(String, String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, String, CancellationToken) Octopus.Client.Editors.Async.TenantEditor Customize(Action) - Task Save() - Task SetLogo(String) + Task Save(CancellationToken) + Task SetLogo(String, CancellationToken) Octopus.Client.Editors.Async.TenantEditor WithTag(Octopus.Client.Model.TagResource) } class TenantVariablesEditor @@ -1243,8 +1241,8 @@ Octopus.Client.Editors.Async .ctor(Octopus.Client.Repositories.Async.ITenantRepository, Octopus.Client.Model.TenantResource) Octopus.Client.Model.TenantVariableResource Instance { get; } Octopus.Client.Editors.Async.TenantVariablesEditor Customize(Action) - Task Load() - Task Save() + Task Load(CancellationToken) + Task Save(CancellationToken) } class UsernamePasswordAccountEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1265,8 +1263,8 @@ Octopus.Client.Editors.Async Octopus.Client.Editors.Async.VariableSetEditor AddOrUpdateVariableValue(String, String) Octopus.Client.Editors.Async.VariableSetEditor AddOrUpdateVariableValue(String, String, String) Octopus.Client.Editors.Async.VariableSetEditor Customize(Action) - Task Load(String) - Task Save() + Task Load(String, CancellationToken) + Task Save(CancellationToken) } class VariableTemplateContainerEditor`1 { @@ -1288,9 +1286,9 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IWorkerRepository) Octopus.Client.Model.WorkerResource Instance { get; } - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.WorkerPoolResource[]) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.WorkerPoolResource[], CancellationToken) Octopus.Client.Editors.Async.WorkerEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } class WorkerPoolEditor Octopus.Client.Editors.Async.IResourceEditor @@ -1298,10 +1296,10 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IWorkerPoolRepository) Octopus.Client.Model.WorkerPoolResource Instance { get; } - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) Octopus.Client.Editors.Async.WorkerPoolEditor Customize(Action) - Task Save() + Task Save(CancellationToken) } } Octopus.Client.Exceptions @@ -6490,9 +6488,9 @@ Octopus.Client.Operations void Execute(Octopus.Client.OctopusServerEndpoint) void Execute(Octopus.Client.OctopusRepository) void Execute(Octopus.Client.IOctopusSpaceRepository) - Task ExecuteAsync(Octopus.Client.OctopusServerEndpoint) - Task ExecuteAsync(Octopus.Client.OctopusAsyncRepository) - Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository) + Task ExecuteAsync(Octopus.Client.OctopusServerEndpoint, CancellationToken) + Task ExecuteAsync(Octopus.Client.OctopusAsyncRepository, CancellationToken) + Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository, CancellationToken) } interface IRegisterWorkerOperation Octopus.Client.Operations.IRegisterMachineOperationBase @@ -6512,7 +6510,7 @@ Octopus.Client.Operations String[] Tenants { get; set; } String[] TenantTags { get; set; } void Execute(Octopus.Client.IOctopusSpaceRepository) - Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository) + Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository, CancellationToken) } abstract class RegisterMachineOperationBase Octopus.Client.Operations.IRegisterMachineOperationBase @@ -6530,9 +6528,9 @@ Octopus.Client.Operations void Execute(Octopus.Client.OctopusServerEndpoint) void Execute(Octopus.Client.OctopusRepository) void Execute(Octopus.Client.IOctopusSpaceRepository) - Task ExecuteAsync(Octopus.Client.OctopusServerEndpoint) - Task ExecuteAsync(Octopus.Client.OctopusAsyncRepository) - Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository) + Task ExecuteAsync(Octopus.Client.OctopusServerEndpoint, CancellationToken) + Task ExecuteAsync(Octopus.Client.OctopusAsyncRepository, CancellationToken) + Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository, CancellationToken) } class RegisterWorkerOperation Octopus.Client.Operations.IRegisterMachineOperationBase @@ -6543,7 +6541,7 @@ Octopus.Client.Operations .ctor(Octopus.Client.IOctopusClientFactory) String[] WorkerPoolNames { get; set; } void Execute(Octopus.Client.IOctopusSpaceRepository) - Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository) + Task ExecuteAsync(Octopus.Client.IOctopusSpaceAsyncRepository, CancellationToken) } } Octopus.Client.Repositories @@ -7314,16 +7312,16 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate { Octopus.Client.Model.Accounts.AccountType DetermineAccountType() - Task> FindAllOfType(Object) - Task FindByNameOfType(String) - Task> FindByNamesOfType(IEnumerable) - Task> FindManyOfType(Func, Object) - Task FindOneOfType(Func, Object) - Task GetAccountUsage(Octopus.Client.Model.Accounts.AccountResource) - Task GetOfType(String) - Task> GetOfType(String[]) - Task PaginateOfType(Func, Boolean>, Object) - Task RefreshOfType(Octopus.Client.Repositories.Async.TAccount) + Task> FindAllOfType(Object, CancellationToken) + Task FindByNameOfType(String, CancellationToken) + Task> FindByNamesOfType(IEnumerable, CancellationToken) + Task> FindManyOfType(Func, Object, CancellationToken) + Task FindOneOfType(Func, Object, CancellationToken) + Task GetAccountUsage(Octopus.Client.Model.Accounts.AccountResource, CancellationToken) + Task GetOfType(String, CancellationToken) + Task> GetOfType(CancellationToken, String[]) + Task PaginateOfType(Func, Boolean>, Object, CancellationToken) + Task RefreshOfType(Octopus.Client.Repositories.Async.TAccount, CancellationToken) } interface IActionTemplateRepository Octopus.Client.Repositories.Async.ICreate @@ -7334,10 +7332,10 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IGetAll { - Task GetVersion(Octopus.Client.Model.ActionTemplateResource, Int32) - Task> Search() - Task SetLogo(Octopus.Client.Model.ActionTemplateResource, String, Stream) - Task UpdateActions(Octopus.Client.Model.ActionTemplateResource, Octopus.Client.Model.ActionsUpdateResource) + Task GetVersion(Octopus.Client.Model.ActionTemplateResource, Int32, CancellationToken) + Task> Search(CancellationToken) + Task SetLogo(Octopus.Client.Model.ActionTemplateResource, String, Stream, CancellationToken) + Task UpdateActions(Octopus.Client.Model.ActionTemplateResource, Octopus.Client.Model.ActionsUpdateResource, CancellationToken) } interface IArtifactRepository Octopus.Client.Repositories.Async.IPaginate @@ -7346,14 +7344,14 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task> FindRegarding(Octopus.Client.Extensibility.IResource) - Task GetContent(Octopus.Client.Model.ArtifactResource) - Task PutContent(Octopus.Client.Model.ArtifactResource, Stream) + Task> FindRegarding(Octopus.Client.Extensibility.IResource, CancellationToken) + Task GetContent(Octopus.Client.Model.ArtifactResource, CancellationToken) + Task PutContent(Octopus.Client.Model.ArtifactResource, Stream, CancellationToken) } interface IBackupRepository { - Task GetConfiguration() - Task ModifyConfiguration(Octopus.Client.Model.BackupConfigurationResource) + Task GetConfiguration(CancellationToken) + Task ModifyConfiguration(Octopus.Client.Model.BackupConfigurationResource, CancellationToken) } interface IBranchScopedRepository { @@ -7361,25 +7359,25 @@ Octopus.Client.Repositories.Async } interface IBuildInformationRepository { - Task Delete(Octopus.Client.Model.BuildInformation.OctopusPackageVersionBuildInformationMappedResource) - Task DeleteBuilds(IReadOnlyList) - Task Get(String) - Task> LatestBuilds(Int32, Int32) - Task> ListBuilds(String, Int32, Int32) - Task Push(String, String, Octopus.Client.Model.BuildInformation.OctopusBuildInformation, Octopus.Client.Model.OverwriteMode) - Task Push(String, String, Octopus.Client.Model.BuildInformation.OctopusBuildInformation, Boolean) + Task Delete(Octopus.Client.Model.BuildInformation.OctopusPackageVersionBuildInformationMappedResource, CancellationToken) + Task DeleteBuilds(IReadOnlyList, CancellationToken) + Task Get(String, CancellationToken) + Task> LatestBuilds(Int32, Int32, CancellationToken) + Task> ListBuilds(String, Int32, Int32, CancellationToken) + Task Push(String, String, Octopus.Client.Model.BuildInformation.OctopusBuildInformation, Octopus.Client.Model.OverwriteMode, CancellationToken) + Task Push(String, String, Octopus.Client.Model.BuildInformation.OctopusBuildInformation, Boolean, CancellationToken) } interface IBuiltInPackageRepositoryRepository { - Task DeletePackage(Octopus.Client.Model.PackageResource) - Task DeletePackages(IReadOnlyList) - Task GetPackage(String, String) - Task> LatestPackages(Int32, Int32) - Task> ListPackages(String, Int32, Int32) - Task PushPackage(String, Stream, Boolean) - Task PushPackage(String, Stream, Boolean, Boolean) - Task PushPackage(String, Stream, Octopus.Client.Model.OverwriteMode) - Task PushPackage(String, Stream, Octopus.Client.Model.OverwriteMode, Boolean) + Task DeletePackage(Octopus.Client.Model.PackageResource, CancellationToken) + Task DeletePackages(IReadOnlyList, CancellationToken) + Task GetPackage(String, String, CancellationToken) + Task> LatestPackages(Int32, Int32, CancellationToken) + Task> ListPackages(String, Int32, Int32, CancellationToken) + Task PushPackage(String, Stream, Boolean, CancellationToken) + Task PushPackage(String, Stream, Boolean, Boolean, CancellationToken) + Task PushPackage(String, Stream, Octopus.Client.Model.OverwriteMode, CancellationToken) + Task PushPackage(String, Stream, Octopus.Client.Model.OverwriteMode, Boolean, CancellationToken) } interface ICanExtendSpaceContext`1 { @@ -7390,8 +7388,8 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IFindByName Octopus.Client.Repositories.Async.IPaginate { - Task GetOctopusCertificate() - Task GetPublicCertificate(Octopus.Client.Model.CertificateConfigurationResource) + Task GetOctopusCertificate(CancellationToken) + Task GetPublicCertificate(Octopus.Client.Model.CertificateConfigurationResource, CancellationToken) } interface ICertificateRepository Octopus.Client.Repositories.Async.IResourceRepository @@ -7402,12 +7400,12 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task Archive(Octopus.Client.Model.CertificateResource) - Task Export(Octopus.Client.Model.CertificateResource, Nullable, String, Boolean) - Task ExportAsPem(Octopus.Client.Model.CertificateResource, Boolean, Octopus.Client.Model.CertificateExportPemOptions) - Task GetOctopusCertificate() - Task Replace(Octopus.Client.Model.CertificateResource, String, String) - Task UnArchive(Octopus.Client.Model.CertificateResource) + Task Archive(Octopus.Client.Model.CertificateResource, CancellationToken) + Task Export(Octopus.Client.Model.CertificateResource, Nullable, String, Boolean, CancellationToken) + Task ExportAsPem(Octopus.Client.Model.CertificateResource, Boolean, Octopus.Client.Model.CertificateExportPemOptions, CancellationToken) + Task GetOctopusCertificate(CancellationToken) + Task Replace(Octopus.Client.Model.CertificateResource, String, String, CancellationToken) + Task UnArchive(Octopus.Client.Model.CertificateResource, CancellationToken) } interface IChannelRepository Octopus.Client.Repositories.Async.ICreate @@ -7416,60 +7414,60 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IDelete Octopus.Client.Repositories.Async.IPaginate { - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String) - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String) - Task FindByName(Octopus.Client.Model.ProjectResource, String) - Task> GetAllReleases(Octopus.Client.Model.ChannelResource) - Task GetReleaseByVersion(Octopus.Client.Model.ChannelResource, String) - Task> GetReleases(Octopus.Client.Model.ChannelResource, Int32, Nullable, String) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String, CancellationToken) + Task FindByName(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task> GetAllReleases(Octopus.Client.Model.ChannelResource, CancellationToken) + Task GetReleaseByVersion(Octopus.Client.Model.ChannelResource, String, CancellationToken) + Task> GetReleases(Octopus.Client.Model.ChannelResource, Int32, Nullable, String, CancellationToken) } interface ICommunityActionTemplateRepository Octopus.Client.Repositories.Async.IGet { - Task GetInstalledTemplate(Octopus.Client.Model.CommunityActionTemplateResource) - Task Install(Octopus.Client.Model.CommunityActionTemplateResource) - Task UpdateInstallation(Octopus.Client.Model.CommunityActionTemplateResource) + Task GetInstalledTemplate(Octopus.Client.Model.CommunityActionTemplateResource, CancellationToken) + Task Install(Octopus.Client.Model.CommunityActionTemplateResource, CancellationToken) + Task UpdateInstallation(Octopus.Client.Model.CommunityActionTemplateResource, CancellationToken) } interface IConfigurationRepository { - Task Get() - Task Modify(Octopus.Client.Repositories.Async.T) + Task Get(CancellationToken) + Task Modify(Octopus.Client.Repositories.Async.T, CancellationToken) } interface ICreate`1 { - Task Create(Octopus.Client.Repositories.Async.TResource, Object) + Task Create(Octopus.Client.Repositories.Async.TResource, Object, CancellationToken) } interface IDashboardConfigurationRepository { - Task GetDashboardConfiguration() - Task ModifyDashboardConfiguration(Octopus.Client.Model.DashboardConfigurationResource) + Task GetDashboardConfiguration(CancellationToken) + Task ModifyDashboardConfiguration(Octopus.Client.Model.DashboardConfigurationResource, CancellationToken) } interface IDashboardRepository { - Task GetDashboard() - Task GetDynamicDashboard(String[], String[], Octopus.Client.Model.DashboardItemsOptions) + Task GetDashboard(CancellationToken) + Task GetDynamicDashboard(String[], String[], Octopus.Client.Model.DashboardItemsOptions, CancellationToken) } interface IDefectsRepository { - Task> GetDefects(Octopus.Client.Model.ReleaseResource) - Task RaiseDefect(Octopus.Client.Model.ReleaseResource, String) - Task ResolveDefect(Octopus.Client.Model.ReleaseResource) + Task> GetDefects(Octopus.Client.Model.ReleaseResource, CancellationToken) + Task RaiseDefect(Octopus.Client.Model.ReleaseResource, String, CancellationToken) + Task ResolveDefect(Octopus.Client.Model.ReleaseResource, CancellationToken) } interface IDelete`1 { - Task Delete(Octopus.Client.Repositories.Async.TResource) + Task Delete(Octopus.Client.Repositories.Async.TResource, CancellationToken) } interface IDeploymentProcessBetaRepository { - Task Get(Octopus.Client.Model.ProjectResource, String) - Task Modify(Octopus.Client.Model.ProjectResource, Octopus.Client.Model.DeploymentProcessResource, String) + Task Get(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task Modify(Octopus.Client.Model.ProjectResource, Octopus.Client.Model.DeploymentProcessResource, String, CancellationToken) } interface IDeploymentProcessRepository Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IModify { Octopus.Client.Repositories.Async.IDeploymentProcessBetaRepository Beta() - Task GetTemplate(Octopus.Client.Model.DeploymentProcessResource, Octopus.Client.Model.ChannelResource) + Task GetTemplate(Octopus.Client.Model.DeploymentProcessResource, Octopus.Client.Model.ChannelResource, CancellationToken) } interface IDeploymentRepository Octopus.Client.Repositories.Async.IGet @@ -7477,11 +7475,11 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IDelete { - Task> FindAll(String[], String[], Int32, Nullable) - Task> FindBy(String[], String[], Int32, Nullable) - Task GetTask(Octopus.Client.Model.DeploymentResource) - Task Paginate(String[], String[], Func, Boolean>) - Task Paginate(String[], String[], String[], Func, Boolean>) + Task> FindAll(String[], String[], Int32, Nullable, CancellationToken) + Task> FindBy(String[], String[], Int32, Nullable, CancellationToken) + Task GetTask(Octopus.Client.Model.DeploymentResource, CancellationToken) + Task Paginate(String[], String[], Func, Boolean>, CancellationToken) + Task Paginate(String[], String[], String[], Func, Boolean>, CancellationToken) } interface IEnvironmentRepository Octopus.Client.Repositories.Async.IFindByName @@ -7492,28 +7490,28 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IDelete Octopus.Client.Repositories.Async.IGetAll { - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task CreateOrModify(String, String, Boolean) - Task> GetMachines(Octopus.Client.Model.EnvironmentResource, Nullable, Nullable, String, String, Nullable, String, String, String, String) - Task Sort(String[]) - Task Summary(String, String, String, String, Nullable, String, String, String, String, Nullable) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task CreateOrModify(String, String, Boolean, CancellationToken) + Task> GetMachines(Octopus.Client.Model.EnvironmentResource, Nullable, Nullable, String, String, Nullable, String, String, String, String, CancellationToken) + Task Sort(String[], CancellationToken) + Task Summary(String, String, String, String, Nullable, String, String, String, String, Nullable, CancellationToken) } interface IEventRepository Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.ICanExtendSpaceContext { - Task> GetAgents() - Task> GetCategories() - Task> GetDocumentTypes() - Task> GetGroups() - Task> List(Int32, String, String, Boolean) - Task> List(Int32, Nullable, String, String, String, String, Boolean, String, String, String, String, String, String, String, String, Nullable, Nullable, String, String, String) + Task> GetAgents(CancellationToken) + Task> GetCategories(CancellationToken) + Task> GetDocumentTypes(CancellationToken) + Task> GetGroups(CancellationToken) + Task> List(Int32, String, String, Boolean, CancellationToken) + Task> List(Int32, Nullable, String, String, String, String, Boolean, String, String, String, String, String, String, String, String, Nullable, Nullable, String, String, String, CancellationToken) } interface IFeaturesConfigurationRepository { - Task GetFeaturesConfiguration() - Task ModifyFeaturesConfiguration(Octopus.Client.Model.FeaturesConfigurationResource) + Task GetFeaturesConfiguration(CancellationToken) + Task ModifyFeaturesConfiguration(Octopus.Client.Model.FeaturesConfigurationResource, CancellationToken) } interface IFeedRepository Octopus.Client.Repositories.Async.ICreate @@ -7523,31 +7521,31 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IFindByName Octopus.Client.Repositories.Async.IPaginate { - Task> GetVersions(Octopus.Client.Model.FeedResource, String[]) + Task> GetVersions(Octopus.Client.Model.FeedResource, String[], CancellationToken) } interface IFindByName`1 Octopus.Client.Repositories.Async.IPaginate { - Task FindByName(String, String, Object) - Task> FindByNames(IEnumerable, String, Object) + Task FindByName(String, String, Object, CancellationToken) + Task> FindByNames(IEnumerable, String, Object, CancellationToken) } interface IGetAll`1 { - Task> GetAll() + Task> GetAll(CancellationToken) } interface IGet`1 { - Task Get(String) - Task> Get(String[]) - Task Refresh(Octopus.Client.Repositories.Async.TResource) + Task Get(String, CancellationToken) + Task> Get(CancellationToken, String[]) + Task Refresh(Octopus.Client.Repositories.Async.TResource, CancellationToken) } interface IInterruptionRepository Octopus.Client.Repositories.Async.IGet { - Task GetResponsibleUser(Octopus.Client.Model.InterruptionResource) - Task> List(Int32, Nullable, Boolean, String) - Task Submit(Octopus.Client.Model.InterruptionResource) - Task TakeResponsibility(Octopus.Client.Model.InterruptionResource) + Task GetResponsibleUser(Octopus.Client.Model.InterruptionResource, CancellationToken) + Task> List(Int32, Nullable, Boolean, String, CancellationToken) + Task Submit(Octopus.Client.Model.InterruptionResource, CancellationToken) + Task TakeResponsibility(Octopus.Client.Model.InterruptionResource, CancellationToken) } interface ILibraryVariableSetRepository Octopus.Client.Repositories.Async.ICreate @@ -7557,14 +7555,14 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IFindByName Octopus.Client.Repositories.Async.IPaginate { - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) } interface ILicensesRepository { - Task GetCurrent() - Task GetStatus() - Task UpdateCurrent(Octopus.Client.Model.LicenseResource) + Task GetCurrent(CancellationToken) + Task GetStatus(CancellationToken) + Task UpdateCurrent(Octopus.Client.Model.LicenseResource, CancellationToken) } interface ILifecyclesRepository Octopus.Client.Repositories.Async.IGet @@ -7574,8 +7572,8 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IFindByName Octopus.Client.Repositories.Async.IPaginate { - Task CreateOrModify(String) - Task CreateOrModify(String, String) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) } interface IMachinePolicyRepository Octopus.Client.Repositories.Async.IFindByName @@ -7585,8 +7583,8 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IDelete { - Task> GetMachines(Octopus.Client.Model.MachinePolicyResource) - Task GetTemplate() + Task> GetMachines(Octopus.Client.Model.MachinePolicyResource, CancellationToken) + Task GetTemplate(CancellationToken) } interface IMachineRepository Octopus.Client.Repositories.Async.IFindByName @@ -7596,28 +7594,28 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], Octopus.Client.Model.TenantResource[], Octopus.Client.Model.TagResource[], Nullable) - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[]) - Task Discover(String, Int32, Nullable) - Task Discover(Octopus.Client.Model.DiscoverMachineOptions) - Task> FindByThumbprint(String) - Task GetConnectionStatus(Octopus.Client.Model.MachineResource) - Task> GetTasks(Octopus.Client.Model.MachineResource) - Task> GetTasks(Octopus.Client.Model.MachineResource, Object) - Task> List(Int32, Nullable, String, String, String, String, Nullable, String, String, String, String, String) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], Octopus.Client.Model.TenantResource[], Octopus.Client.Model.TagResource[], Nullable, CancellationToken) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.EnvironmentResource[], String[], CancellationToken) + Task Discover(String, Int32, Nullable, CancellationToken) + Task Discover(Octopus.Client.Model.DiscoverMachineOptions, CancellationToken) + Task> FindByThumbprint(String, CancellationToken) + Task GetConnectionStatus(Octopus.Client.Model.MachineResource, CancellationToken) + Task> GetTasks(Octopus.Client.Model.MachineResource, CancellationToken) + Task> GetTasks(Octopus.Client.Model.MachineResource, Object, CancellationToken) + Task> List(Int32, Nullable, String, String, String, String, Nullable, String, String, String, String, String, CancellationToken) } interface IMachineRoleRepository { - Task> GetAllRoleNames() + Task> GetAllRoleNames(CancellationToken) } interface IMigrationRepository { - Task Import(Octopus.Client.Model.Migrations.MigrationImportResource) - Task PartialExport(Octopus.Client.Model.Migrations.MigrationPartialExportResource) + Task Import(Octopus.Client.Model.Migrations.MigrationImportResource, CancellationToken) + Task PartialExport(Octopus.Client.Model.Migrations.MigrationPartialExportResource, CancellationToken) } interface IModify`1 { - Task Modify(Octopus.Client.Repositories.Async.TResource) + Task Modify(Octopus.Client.Repositories.Async.TResource, CancellationToken) } interface IOctopusServerNodeRepository Octopus.Client.Repositories.Async.IModify @@ -7626,8 +7624,8 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IFindByName Octopus.Client.Repositories.Async.IPaginate { - Task Details(Octopus.Client.Model.OctopusServerNodeResource) - Task Summary() + Task Details(Octopus.Client.Model.OctopusServerNodeResource, CancellationToken) + Task Summary(CancellationToken) } interface IOctopusSpaceAsyncBetaRepository { @@ -7635,26 +7633,26 @@ Octopus.Client.Repositories.Async } interface IPackageMetadataRepository { - Task Get(String) - Task Push(String, String, Octopus.Client.Model.PackageMetadata.OctopusPackageMetadata, Octopus.Client.Model.OverwriteMode) - Task Push(String, String, Octopus.Client.Model.PackageMetadata.OctopusPackageMetadata, Boolean) + Task Get(String, CancellationToken) + Task Push(String, String, Octopus.Client.Model.PackageMetadata.OctopusPackageMetadata, Octopus.Client.Model.OverwriteMode, CancellationToken) + Task Push(String, String, Octopus.Client.Model.PackageMetadata.OctopusPackageMetadata, Boolean, CancellationToken) } interface IPaginate`1 { - Task> FindAll(String, Object) - Task> FindMany(Func, String, Object) - Task FindOne(Func, String, Object) - Task Paginate(Func, Boolean>, String, Object) + Task> FindAll(String, Object, CancellationToken) + Task> FindMany(Func, String, Object, CancellationToken) + Task FindOne(Func, String, Object, CancellationToken) + Task Paginate(Func, Boolean>, String, Object, CancellationToken) } interface IPerformanceConfigurationRepository { - Task Get() - Task Modify(Octopus.Client.Model.PerformanceConfigurationResource) + Task Get(CancellationToken) + Task Modify(Octopus.Client.Model.PerformanceConfigurationResource, CancellationToken) } interface IProjectBetaRepository { - Task GetVersionControlledBranch(Octopus.Client.Model.ProjectResource, String) - Task GetVersionControlledBranches(Octopus.Client.Model.ProjectResource) + Task GetVersionControlledBranch(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task GetVersionControlledBranches(Octopus.Client.Model.ProjectResource, CancellationToken) } interface IProjectGroupRepository Octopus.Client.Repositories.Async.IFindByName @@ -7665,9 +7663,9 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IDelete Octopus.Client.Repositories.Async.IGetAll { - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task> GetProjects(Octopus.Client.Model.ProjectGroupResource) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task> GetProjects(Octopus.Client.Model.ProjectGroupResource, CancellationToken) } interface IProjectRepository Octopus.Client.Repositories.Async.IFindByName @@ -7679,22 +7677,22 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IGetAll { Octopus.Client.Repositories.Async.IProjectBetaRepository Beta() - Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource) - Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, String, String) - Task> GetAllChannels(Octopus.Client.Model.ProjectResource) - Task> GetAllReleases(Octopus.Client.Model.ProjectResource) - Task> GetAllRunbooks(Octopus.Client.Model.ProjectResource) - Task> GetAllRunbookSnapshots(Octopus.Client.Model.ProjectResource) - Task> GetAllTriggers(Octopus.Client.Model.ProjectResource) - Task> GetChannels(Octopus.Client.Model.ProjectResource) - Task GetProgression(Octopus.Client.Model.ProjectResource) - Task GetReleaseByVersion(Octopus.Client.Model.ProjectResource, String) - Task> GetReleases(Octopus.Client.Model.ProjectResource, Int32, Nullable, String) - Task> GetRunbooks(Octopus.Client.Model.ProjectResource, Int32, Nullable, String) - Task GetRunbookSnapshotByName(Octopus.Client.Model.ProjectResource, String) - Task> GetRunbookSnapshots(Octopus.Client.Model.ProjectResource, Int32, Nullable, String) - Task> GetTriggers(Octopus.Client.Model.ProjectResource) - Task SetLogo(Octopus.Client.Model.ProjectResource, String, Stream) + Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, CancellationToken) + Task CreateOrModify(String, Octopus.Client.Model.ProjectGroupResource, Octopus.Client.Model.LifecycleResource, String, String, CancellationToken) + Task> GetAllChannels(Octopus.Client.Model.ProjectResource, CancellationToken) + Task> GetAllReleases(Octopus.Client.Model.ProjectResource, CancellationToken) + Task> GetAllRunbooks(Octopus.Client.Model.ProjectResource, CancellationToken) + Task> GetAllRunbookSnapshots(Octopus.Client.Model.ProjectResource, CancellationToken) + Task> GetAllTriggers(Octopus.Client.Model.ProjectResource, CancellationToken) + Task> GetChannels(Octopus.Client.Model.ProjectResource, CancellationToken) + Task GetProgression(Octopus.Client.Model.ProjectResource, CancellationToken) + Task GetReleaseByVersion(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task> GetReleases(Octopus.Client.Model.ProjectResource, Int32, Nullable, String, CancellationToken) + Task> GetRunbooks(Octopus.Client.Model.ProjectResource, Int32, Nullable, String, CancellationToken) + Task GetRunbookSnapshotByName(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task> GetRunbookSnapshots(Octopus.Client.Model.ProjectResource, Int32, Nullable, String, CancellationToken) + Task> GetTriggers(Octopus.Client.Model.ProjectResource, CancellationToken) + Task SetLogo(Octopus.Client.Model.ProjectResource, String, Stream, CancellationToken) } interface IProjectTriggerRepository Octopus.Client.Repositories.Async.ICreate @@ -7702,9 +7700,9 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IDelete { - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource) - Task FindByName(Octopus.Client.Model.ProjectResource, String) - Task> FindByRunbook(String[]) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, Octopus.Client.Model.Triggers.TriggerFilterResource, Octopus.Client.Model.Triggers.TriggerActionResource, CancellationToken) + Task FindByName(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task> FindByRunbook(CancellationToken, String[]) } interface IProxyRepository Octopus.Client.Repositories.Async.IGet @@ -7722,13 +7720,13 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task Create(Octopus.Client.Model.ReleaseResource, Boolean) - Task> GetArtifacts(Octopus.Client.Model.ReleaseResource, Int32, Nullable) - Task> GetDeployments(Octopus.Client.Model.ReleaseResource, Int32, Nullable) - Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget) - Task GetProgression(Octopus.Client.Model.ReleaseResource) - Task GetTemplate(Octopus.Client.Model.ReleaseResource) - Task SnapshotVariables(Octopus.Client.Model.ReleaseResource) + Task Create(Octopus.Client.Model.ReleaseResource, Boolean, CancellationToken) + Task> GetArtifacts(Octopus.Client.Model.ReleaseResource, Int32, Nullable, CancellationToken) + Task> GetDeployments(Octopus.Client.Model.ReleaseResource, Int32, Nullable, CancellationToken) + Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget, CancellationToken) + Task GetProgression(Octopus.Client.Model.ReleaseResource, CancellationToken) + Task GetTemplate(Octopus.Client.Model.ReleaseResource, CancellationToken) + Task SnapshotVariables(Octopus.Client.Model.ReleaseResource, CancellationToken) } interface IResourceRepository { @@ -7736,13 +7734,13 @@ Octopus.Client.Repositories.Async } interface IRetentionPolicyRepository { - Task ApplyNow(String) + Task ApplyNow(String, CancellationToken) } interface IRunbookProcessRepository Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IModify { - Task GetTemplate(Octopus.Client.Model.RunbookProcessResource) + Task GetTemplate(Octopus.Client.Model.RunbookProcessResource, CancellationToken) } interface IRunbookRepository Octopus.Client.Repositories.Async.IFindByName @@ -7752,13 +7750,13 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String) - Task FindByName(Octopus.Client.Model.ProjectResource, String) - Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget) - Task GetRunbookRunTemplate(Octopus.Client.Model.RunbookResource) - Task GetRunbookSnapshotTemplate(Octopus.Client.Model.RunbookResource) - Task Run(Octopus.Client.Model.RunbookResource, Octopus.Client.Model.RunbookRunResource) - Task Run(Octopus.Client.Model.RunbookResource, Octopus.Client.Model.RunbookRunParameters) + Task CreateOrModify(Octopus.Client.Model.ProjectResource, String, String, CancellationToken) + Task FindByName(Octopus.Client.Model.ProjectResource, String, CancellationToken) + Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget, CancellationToken) + Task GetRunbookRunTemplate(Octopus.Client.Model.RunbookResource, CancellationToken) + Task GetRunbookSnapshotTemplate(Octopus.Client.Model.RunbookResource, CancellationToken) + Task Run(Octopus.Client.Model.RunbookResource, Octopus.Client.Model.RunbookRunResource, CancellationToken) + Task Run(Octopus.Client.Model.RunbookResource, Octopus.Client.Model.RunbookRunParameters, CancellationToken) } interface IRunbookRunRepository Octopus.Client.Repositories.Async.IGet @@ -7766,10 +7764,10 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IDelete { - Task> FindBy(String[], String[], String[], Int32, Nullable) - Task GetTask(Octopus.Client.Model.RunbookRunResource) - Task Paginate(String[], String[], String[], Func, Boolean>) - Task Paginate(String[], String[], String[], String[], Func, Boolean>) + Task> FindBy(String[], String[], String[], Int32, Nullable, CancellationToken) + Task GetTask(Octopus.Client.Model.RunbookRunResource, CancellationToken) + Task Paginate(String[], String[], String[], Func, Boolean>, CancellationToken) + Task Paginate(String[], String[], String[], String[], Func, Boolean>, CancellationToken) } interface IRunbookSnapshotRepository Octopus.Client.Repositories.Async.IGet @@ -7778,23 +7776,23 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task Create(Octopus.Client.Model.RunbookSnapshotResource) - Task> GetArtifacts(Octopus.Client.Model.RunbookSnapshotResource, Int32, Nullable) - Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget) - Task> GetRunbookRuns(Octopus.Client.Model.RunbookSnapshotResource, Int32, Nullable) - Task GetTemplate(Octopus.Client.Model.RunbookSnapshotResource) - Task SnapshotVariables(Octopus.Client.Model.RunbookSnapshotResource) + Task Create(Octopus.Client.Model.RunbookSnapshotResource, CancellationToken) + Task> GetArtifacts(Octopus.Client.Model.RunbookSnapshotResource, Int32, Nullable, CancellationToken) + Task GetPreview(Octopus.Client.Model.DeploymentPromotionTarget, CancellationToken) + Task> GetRunbookRuns(Octopus.Client.Model.RunbookSnapshotResource, Int32, Nullable, CancellationToken) + Task GetTemplate(Octopus.Client.Model.RunbookSnapshotResource, CancellationToken) + Task SnapshotVariables(Octopus.Client.Model.RunbookSnapshotResource, CancellationToken) } interface ISchedulerRepository { - Task GetLogs(String) - Task GetRawLogs(String) - Task Start() - Task Start(String) - Task Status() - Task Stop() - Task Stop(String) - Task Trigger(String) + Task GetLogs(String, CancellationToken) + Task GetRawLogs(String, CancellationToken) + Task Start(CancellationToken) + Task Start(String, CancellationToken) + Task Status(CancellationToken) + Task Stop(CancellationToken) + Task Stop(String, CancellationToken) + Task Trigger(String, CancellationToken) } interface IScopedUserRoleRepository Octopus.Client.Repositories.Async.ICreate @@ -7806,9 +7804,9 @@ Octopus.Client.Repositories.Async } interface IServerStatusRepository { - Task GetServerHealth() - Task GetServerStatus() - Task GetSystemInfo(Octopus.Client.Model.ServerStatusResource) + Task GetServerHealth(CancellationToken) + Task GetServerStatus(CancellationToken) + Task GetSystemInfo(Octopus.Client.Model.ServerStatusResource, CancellationToken) } interface ISpaceRepository Octopus.Client.Repositories.Async.ICreate @@ -7818,7 +7816,7 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IGet { - Task SetLogo(Octopus.Client.Model.SpaceResource, String, Stream) + Task SetLogo(Octopus.Client.Model.SpaceResource, String, Stream, CancellationToken) } interface ISubscriptionRepository Octopus.Client.Repositories.Async.IFindByName @@ -7828,7 +7826,7 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IDelete { - Task CreateOrModify(String, Octopus.Client.Model.EventNotificationSubscription, Boolean) + Task CreateOrModify(String, Octopus.Client.Model.EventNotificationSubscription, Boolean, CancellationToken) } interface ITagSetRepository Octopus.Client.Repositories.Async.ICreate @@ -7839,9 +7837,9 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IGetAll { - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task Sort(String[]) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task Sort(String[], CancellationToken) } interface ITaskRepository Octopus.Client.Repositories.Async.IPaginate @@ -7849,27 +7847,27 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.ICreate Octopus.Client.Repositories.Async.ICanExtendSpaceContext { - Task Cancel(Octopus.Client.Model.TaskResource) - Task ExecuteActionTemplate(Octopus.Client.Model.ActionTemplateResource, Dictionary, String[], String[], String[], String, Nullable) - Task ExecuteAdHocScript(String, String[], String[], String[], String, String, Nullable) - Task ExecuteBackup(String) - Task ExecuteCalamariUpdate(String, String[]) - Task ExecuteCommunityActionTemplatesSynchronisation(String) - Task ExecuteHealthCheck(String, Int32, Int32, String, String[], String, String, String[]) - Task ExecuteTentacleUpgrade(String, String, String[], String, String, String[]) - Task GetActiveWithSummary(Int32, Int32) - Task> GetAllActive(Int32) - Task GetAllWithSummary(Int32, Int32) - Task GetDetails(Octopus.Client.Model.TaskResource, Nullable, Nullable) - Task> GetQueuedBehindTasks(Octopus.Client.Model.TaskResource) - Task GetRawOutputLog(Octopus.Client.Model.TaskResource) - Task GetTaskTypes() - Task ModifyState(Octopus.Client.Model.TaskResource, Octopus.Client.Model.TaskState, String) - Task Rerun(Octopus.Client.Model.TaskResource) - Task WaitForCompletion(Octopus.Client.Model.TaskResource, Int32, Int32, Action) - Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Int32, Action) - Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Int32, Func) - Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Nullable, Func) + Task Cancel(Octopus.Client.Model.TaskResource, CancellationToken) + Task ExecuteActionTemplate(Octopus.Client.Model.ActionTemplateResource, Dictionary, String[], String[], String[], String, Nullable, CancellationToken) + Task ExecuteAdHocScript(String, String[], String[], String[], String, String, Nullable, CancellationToken) + Task ExecuteBackup(String, CancellationToken) + Task ExecuteCalamariUpdate(String, String[], CancellationToken) + Task ExecuteCommunityActionTemplatesSynchronisation(String, CancellationToken) + Task ExecuteHealthCheck(String, Int32, Int32, String, String[], String, String, String[], CancellationToken) + Task ExecuteTentacleUpgrade(String, String, String[], String, String, String[], CancellationToken) + Task GetActiveWithSummary(Int32, Int32, CancellationToken) + Task> GetAllActive(Int32, CancellationToken) + Task GetAllWithSummary(Int32, Int32, CancellationToken) + Task GetDetails(Octopus.Client.Model.TaskResource, Nullable, Nullable, CancellationToken) + Task> GetQueuedBehindTasks(Octopus.Client.Model.TaskResource, CancellationToken) + Task GetRawOutputLog(Octopus.Client.Model.TaskResource, CancellationToken) + Task GetTaskTypes(CancellationToken) + Task ModifyState(Octopus.Client.Model.TaskResource, Octopus.Client.Model.TaskState, String, CancellationToken) + Task Rerun(Octopus.Client.Model.TaskResource, CancellationToken) + Task WaitForCompletion(Octopus.Client.Model.TaskResource, Int32, Int32, Action, CancellationToken) + Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Int32, Action, CancellationToken) + Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Int32, Func, CancellationToken) + Task WaitForCompletion(Octopus.Client.Model.TaskResource[], Int32, Nullable, Func, CancellationToken) } interface ITeamsRepository Octopus.Client.Repositories.Async.ICreate @@ -7880,7 +7878,7 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.ICanExtendSpaceContext { - Task> GetScopedUserRoles(Octopus.Client.Model.TeamResource) + Task> GetScopedUserRoles(Octopus.Client.Model.TeamResource, CancellationToken) } interface ITenantRepository Octopus.Client.Repositories.Async.ICreate @@ -7891,38 +7889,38 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IPaginate Octopus.Client.Repositories.Async.IGetAll { - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task CreateOrModify(String, String, String) - Task> FindAll(String, String[], Int32) - Task> GetMissingVariables(String, String, String) - Task GetVariables(Octopus.Client.Model.TenantResource) - Task ModifyVariables(Octopus.Client.Model.TenantResource, Octopus.Client.Model.TenantVariableResource) - Task SetLogo(Octopus.Client.Model.TenantResource, String, Stream) - Task Status() + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task CreateOrModify(String, String, String, CancellationToken) + Task> FindAll(String, String[], Int32, CancellationToken) + Task> GetMissingVariables(String, String, String, CancellationToken) + Task GetVariables(Octopus.Client.Model.TenantResource, CancellationToken) + Task ModifyVariables(Octopus.Client.Model.TenantResource, Octopus.Client.Model.TenantVariableResource, CancellationToken) + Task SetLogo(Octopus.Client.Model.TenantResource, String, Stream, CancellationToken) + Task Status(CancellationToken) } interface ITenantVariablesRepository Octopus.Client.Repositories.Async.IGetAll { - Task> GetAll(Octopus.Client.Model.ProjectResource) + Task> GetAll(Octopus.Client.Model.ProjectResource, CancellationToken) } interface IUpgradeConfigurationRepository Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IModify { - Task Get() + Task Get(CancellationToken) } interface IUserInvitesRepository { - Task Invite(String) - Task Invite(Octopus.Client.Model.ReferenceCollection) + Task Invite(String, CancellationToken) + Task Invite(Octopus.Client.Model.ReferenceCollection, CancellationToken) } interface IUserPermissionsRepository Octopus.Client.Repositories.Async.ICanExtendSpaceContext { - Task Export(Octopus.Client.Model.UserPermissionSetResource) - Task Get(Octopus.Client.Model.UserResource) - Task GetConfiguration(Octopus.Client.Model.UserResource) + Task Export(Octopus.Client.Model.UserPermissionSetResource, CancellationToken) + Task Get(Octopus.Client.Model.UserResource, CancellationToken) + Task GetConfiguration(Octopus.Client.Model.UserResource, CancellationToken) } interface IUserRepository Octopus.Client.Repositories.Async.IPaginate @@ -7931,20 +7929,20 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IDelete Octopus.Client.Repositories.Async.ICreate { - Task Create(String, String, String, String) - Task CreateApiKey(Octopus.Client.Model.UserResource, String) - Task CreateServiceAccount(String, String) - Task FindByUsername(String) - Task> GetApiKeys(Octopus.Client.Model.UserResource) - Task GetCurrent() - Task GetSpaces(Octopus.Client.Model.UserResource) - Task Invite(String) - Task Invite(Octopus.Client.Model.ReferenceCollection) - Task Register(Octopus.Client.Model.RegisterCommand) - Task RevokeApiKey(Octopus.Client.Model.ApiKeyResource) - Task SignIn(Octopus.Client.Model.LoginCommand) - Task SignIn(String, String, Boolean) - Task SignOut() + Task Create(String, String, String, String, CancellationToken) + Task CreateApiKey(Octopus.Client.Model.UserResource, String, CancellationToken) + Task CreateServiceAccount(String, String, CancellationToken) + Task FindByUsername(String, CancellationToken) + Task> GetApiKeys(Octopus.Client.Model.UserResource, CancellationToken) + Task GetCurrent(CancellationToken) + Task GetSpaces(Octopus.Client.Model.UserResource, CancellationToken) + Task Invite(String, CancellationToken) + Task Invite(Octopus.Client.Model.ReferenceCollection, CancellationToken) + Task Register(Octopus.Client.Model.RegisterCommand, CancellationToken) + Task RevokeApiKey(Octopus.Client.Model.ApiKeyResource, CancellationToken) + Task SignIn(Octopus.Client.Model.LoginCommand, CancellationToken) + Task SignIn(String, String, Boolean, CancellationToken) + Task SignOut(CancellationToken) } interface IUserRolesRepository Octopus.Client.Repositories.Async.IFindByName @@ -7958,23 +7956,23 @@ Octopus.Client.Repositories.Async interface IUserTeamsRepository Octopus.Client.Repositories.Async.ICanExtendSpaceContext { - Task Get(Octopus.Client.Model.UserResource) + Task Get(Octopus.Client.Model.UserResource, CancellationToken) } interface IVariableSetRepository Octopus.Client.Repositories.Async.IGet Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IGetAll { - Task GetVariableNames(String, String[]) - Task GetVariablePreview(String, String, String, String, String, String, String, String) + Task GetVariableNames(String, String[], CancellationToken) + Task GetVariablePreview(String, String, String, String, String, String, String, String, CancellationToken) } interface IVcsRunbookRepository { - Task Create(Octopus.Client.Model.VcsRunbookResource, String) - Task Delete(Octopus.Client.Model.VcsRunbookResource, String) - Task Get(String) - Task> List(String, Int32, Nullable) - Task Modify(Octopus.Client.Model.VcsRunbookResource, String) + Task Create(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) + Task Delete(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) + Task Get(String, CancellationToken) + Task> List(String, Int32, Nullable, CancellationToken) + Task Modify(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) } interface IWorkerPoolRepository Octopus.Client.Repositories.Async.IFindByName @@ -7985,11 +7983,11 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IDelete Octopus.Client.Repositories.Async.IGetAll { - Task CreateOrModify(String) - Task CreateOrModify(String, String) - Task> GetMachines(Octopus.Client.Model.WorkerPoolResource, Nullable, Nullable, String, Nullable, String, String) - Task Sort(String[]) - Task Summary(String, String, String, Nullable, String, String, Nullable) + Task CreateOrModify(String, CancellationToken) + Task CreateOrModify(String, String, CancellationToken) + Task> GetMachines(Octopus.Client.Model.WorkerPoolResource, Nullable, Nullable, String, Nullable, String, String, CancellationToken) + Task Sort(String[], CancellationToken) + Task Summary(String, String, String, Nullable, String, String, Nullable, CancellationToken) } interface IWorkerRepository Octopus.Client.Repositories.Async.IFindByName @@ -7999,11 +7997,11 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IModify Octopus.Client.Repositories.Async.IDelete { - Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.WorkerPoolResource[]) - Task Discover(String, Int32, Nullable) - Task> FindByThumbprint(String) - Task GetConnectionStatus(Octopus.Client.Model.WorkerResource) - Task> List(Int32, Nullable, String, String, String, Nullable, String, String, String) + Task CreateOrModify(String, Octopus.Client.Model.Endpoints.EndpointResource, Octopus.Client.Model.WorkerPoolResource[], CancellationToken) + Task Discover(String, Int32, Nullable, CancellationToken) + Task> FindByThumbprint(String, CancellationToken) + Task GetConnectionStatus(Octopus.Client.Model.WorkerResource, CancellationToken) + Task> List(Int32, Nullable, String, String, String, Nullable, String, String, String, CancellationToken) } class OctopusSpaceAsyncBetaRepository Octopus.Client.Repositories.Async.IOctopusSpaceAsyncBetaRepository @@ -8022,11 +8020,11 @@ Octopus.Client.Repositories.Async Octopus.Client.Repositories.Async.IVcsRunbookRepository { .ctor(Octopus.Client.IOctopusAsyncRepository, Octopus.Client.Model.VersionControlBranchResource) - Task Create(Octopus.Client.Model.VcsRunbookResource, String) - Task Delete(Octopus.Client.Model.VcsRunbookResource, String) - Task Get(String) - Task> List(String, Int32, Nullable) - Task Modify(Octopus.Client.Model.VcsRunbookResource, String) + Task Create(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) + Task Delete(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) + Task Get(String, CancellationToken) + Task> List(String, Int32, Nullable, CancellationToken) + Task Modify(Octopus.Client.Model.VcsRunbookResource, String, CancellationToken) } } Octopus.Client.Serialization From 661411ce57fa9f3b7f007cfac937d624c84a9167 Mon Sep 17 00:00:00 2001 From: yj7o5 Date: Sat, 10 Oct 2020 01:54:25 -0500 Subject: [PATCH 10/10] Add paramter description for CancellationToken --- source/Octopus.Client/IOctopusAsyncClient.cs | 34 +++++++++---------- source/Octopus.Client/OctopusAsyncClient.cs | 28 +++++++-------- .../IRegisterMachineOperationBase.cs | 6 ++-- .../Operations/RegisterMachineOperation.cs | 2 +- .../RegisterMachineOperationBase.cs | 6 ++-- .../Operations/RegisterWorkerOperation.cs | 2 +- .../Async/CertificateRepository.cs | 6 ++-- .../Repositories/Async/DashboardRepository.cs | 2 +- .../Async/DeploymentRepository.cs | 2 +- .../Repositories/Async/EventRepository.cs | 2 +- .../Async/InterruptionRepository.cs | 2 +- .../Repositories/Async/MachineRepository.cs | 4 +-- .../Repositories/Async/ReleaseRepository.cs | 4 +-- .../Async/RunbookRunRepository.cs | 2 +- .../Async/RunbookSnapshotRepository.cs | 4 +-- .../Repositories/Async/TaskRepository.cs | 6 ++-- .../Repositories/Async/TenantRepository.cs | 2 +- 17 files changed, 57 insertions(+), 57 deletions(-) diff --git a/source/Octopus.Client/IOctopusAsyncClient.cs b/source/Octopus.Client/IOctopusAsyncClient.cs index b137c99c2..6d547ac0d 100644 --- a/source/Octopus.Client/IOctopusAsyncClient.cs +++ b/source/Octopus.Client/IOctopusAsyncClient.cs @@ -84,7 +84,7 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path from which to fetch the resources. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// The collection of resources from the server. Task> List(string path, object pathParameters = null, CancellationToken token = default); @@ -103,7 +103,7 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path from which to fetch the resources. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// The collection of resources from the server. Task> ListAll(string path, object pathParameters = null, CancellationToken token = default); @@ -125,7 +125,7 @@ public interface IOctopusAsyncClient : IDisposable /// A callback invoked for each page of data found. If the callback returns true, the next /// page will also be requested. /// - /// + /// A cancellation token /// The collection of resources from the server. Task Paginate(string path, Func, bool> getNextPage, CancellationToken token = default); @@ -148,7 +148,7 @@ public interface IOctopusAsyncClient : IDisposable /// A callback invoked for each page of data found. If the callback returns true, the next /// page will also be requested. /// - /// + /// A cancellation token /// The collection of resources from the server. Task Paginate(string path, object pathParameters, Func, bool> getNextPage, CancellationToken token = default); @@ -167,7 +167,7 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path from which to fetch the resource. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// The resource from the server. Task Get(string path, object pathParameters = null, CancellationToken token = default); @@ -188,7 +188,7 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// The latest copy of the resource from the server. Task Create(string path, TResource resource, object pathParameters = null, CancellationToken token = default); @@ -208,7 +208,7 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default); /// @@ -227,7 +227,7 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default); /// @@ -244,7 +244,7 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 400: If there was a problem with the request provided by the user. /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. - /// + /// A cancellation token Task Post(string path, CancellationToken token = default); /// @@ -261,7 +261,7 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 400: If there was a problem with the request provided by the user. /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. - /// + /// A cancellation token Task Put(string path, CancellationToken token = default); /// @@ -280,7 +280,7 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token Task Put(string path, TResource resource, object pathParameters = null, CancellationToken token = default); /// @@ -300,7 +300,7 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the resource to update. /// The resource to update. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// The latest copy of the resource from the server. Task Update(string path, TResource resource, object pathParameters = null, CancellationToken token = default); @@ -323,7 +323,7 @@ public interface IOctopusAsyncClient : IDisposable /// The path to the resource to delete. /// If the path is a URI template, parameters to use for substitution. /// An optional resource to pass as the body of the request. - /// + /// A cancellation token /// A task resource that provides details about the background task that deletes the specified resource. Task Delete(string path, object pathParameters = null, object resource = null, CancellationToken token = default); @@ -342,7 +342,7 @@ public interface IOctopusAsyncClient : IDisposable /// HTTP 404: If the specified resource does not exist on the server. /// The path to the resource to fetch. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// A stream containing the content of the resource. Task GetContent(string path, object pathParameters = null, CancellationToken token = default); @@ -351,7 +351,7 @@ public interface IOctopusAsyncClient : IDisposable /// /// The path to the resource to create or update. /// A stream containing content of the resource. - /// + /// A cancellation token Task PutContent(string path, Stream contentStream, CancellationToken token = default); Uri QualifyUri(string path, object parameters = null); @@ -360,14 +360,14 @@ public interface IOctopusAsyncClient : IDisposable /// Sign in /// /// - /// + /// A cancellation token /// Task SignIn(LoginCommand loginCommand, CancellationToken token = default); /// /// Sign out /// - /// + /// A cancellation token /// Task SignOut(CancellationToken token = default); diff --git a/source/Octopus.Client/OctopusAsyncClient.cs b/source/Octopus.Client/OctopusAsyncClient.cs index 8d85d657e..b3b8d20dd 100644 --- a/source/Octopus.Client/OctopusAsyncClient.cs +++ b/source/Octopus.Client/OctopusAsyncClient.cs @@ -226,7 +226,7 @@ public async Task SignOut(CancellationToken token = default) /// /// The path from which to fetch the resource. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// /// The resource from the server. /// @@ -264,7 +264,7 @@ public async Task> List(string path, ob /// /// The path from which to fetch the resources. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// /// The collection of resources from the server. /// @@ -289,7 +289,7 @@ await Paginate(path, pathParameters, r => /// A callback invoked for each page of data found. If the callback returns true, the next /// page will also be requested. /// - /// + /// A cancellation token public async Task Paginate(string path, object pathParameters, Func, bool> getNextPage, CancellationToken token = default) { var page = await List(path, pathParameters, token).ConfigureAwait(false); @@ -309,7 +309,7 @@ public async Task Paginate(string path, object pathParameters, Functrue, the next /// page will also be requested. /// - /// + /// A cancellation token public Task Paginate(string path, Func, bool> getNextPage, CancellationToken token = default) { return Paginate(path, null, getNextPage, token); @@ -323,7 +323,7 @@ public Task Paginate(string path, Func, /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// /// The latest copy of the resource from the server. /// @@ -342,7 +342,7 @@ public async Task Create(string path, TResource resource, /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token public Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); @@ -358,7 +358,7 @@ public Task Post(string path, TResource resource, object pathParamete /// The path to the container resource. /// The resource to post. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token public async Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); @@ -370,7 +370,7 @@ public async Task Post(string path, TResource r /// Sends a command to a resource at the given URI on the server using the POST verb. /// /// The path to the container resource. - /// + /// A cancellation token public Task Post(string path, CancellationToken token = default) { var uri = QualifyUri(path); @@ -392,7 +392,7 @@ public Task Post(string path, CancellationToken token = default) /// HTTP 400: If there was a problem with the request provided by the user. /// HTTP 404: If the specified resource does not exist on the server. /// The path to the container resource. - /// + /// A cancellation token public Task Put(string path, CancellationToken token = default) { var uri = QualifyUri(path); @@ -407,7 +407,7 @@ public Task Put(string path, CancellationToken token = default) /// The path to the container resource. /// The resource to create. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token public Task Put(string path, TResource resource, object pathParameters = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); @@ -421,7 +421,7 @@ public Task Put(string path, TResource resource, object pathParameter /// The path to the resource to delete. /// If the path is a URI template, parameters to use for substitution. /// An optional resource to pass as the body of the request. - /// + /// A cancellation token public Task Delete(string path, object pathParameters = null, object resource = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); @@ -437,7 +437,7 @@ public Task Delete(string path, object pathParameters = null, object resource = /// The path to the resource to update. /// The resource to update. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// /// The latest copy of the resource from the server. /// @@ -465,7 +465,7 @@ public async Task Update(string path, TResource resource, /// HTTP 404: If the specified resource does not exist on the server. /// The path to the resource to fetch. /// If the path is a URI template, parameters to use for substitution. - /// + /// A cancellation token /// A stream containing the content of the resource. public async Task GetContent(string path, object pathParameters = null, CancellationToken token = default) { @@ -479,7 +479,7 @@ public async Task GetContent(string path, object pathParameters = null, /// /// The path to the resource to create or update. /// A stream containing content of the resource. - /// + /// A cancellation token public Task PutContent(string path, Stream contentStream, CancellationToken token = default) { if (contentStream == null) throw new ArgumentNullException("contentStream"); diff --git a/source/Octopus.Client/Operations/IRegisterMachineOperationBase.cs b/source/Octopus.Client/Operations/IRegisterMachineOperationBase.cs index 24d9f97e0..50cda4706 100644 --- a/source/Octopus.Client/Operations/IRegisterMachineOperationBase.cs +++ b/source/Octopus.Client/Operations/IRegisterMachineOperationBase.cs @@ -78,21 +78,21 @@ public interface IRegisterMachineOperationBase /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server endpoint. - /// + /// A cancellation token Task ExecuteAsync(OctopusServerEndpoint serverEndpoint, CancellationToken token = default); /// /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy repository. - /// + /// A cancellation token Task ExecuteAsync(OctopusAsyncRepository repository, CancellationToken token = default); /// /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy repository. - /// + /// A cancellation token Task ExecuteAsync(IOctopusSpaceAsyncRepository repository, CancellationToken token = default); } } \ No newline at end of file diff --git a/source/Octopus.Client/Operations/RegisterMachineOperation.cs b/source/Octopus.Client/Operations/RegisterMachineOperation.cs index 099c8b49c..6534fccf5 100644 --- a/source/Octopus.Client/Operations/RegisterMachineOperation.cs +++ b/source/Octopus.Client/Operations/RegisterMachineOperation.cs @@ -144,7 +144,7 @@ MachineResource GetMachine(IOctopusSpaceRepository repository) /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server repository. - /// + /// A cancellation token /// /// public override async Task ExecuteAsync(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) diff --git a/source/Octopus.Client/Operations/RegisterMachineOperationBase.cs b/source/Octopus.Client/Operations/RegisterMachineOperationBase.cs index 9afe80d4a..1141fccf7 100644 --- a/source/Octopus.Client/Operations/RegisterMachineOperationBase.cs +++ b/source/Octopus.Client/Operations/RegisterMachineOperationBase.cs @@ -137,7 +137,7 @@ protected ProxyResource GetProxy(IOctopusSpaceRepository repository) /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server endpoint. - /// + /// A cancellation token /// /// public async Task ExecuteAsync(OctopusServerEndpoint serverEndpoint, CancellationToken token = default) @@ -154,7 +154,7 @@ public async Task ExecuteAsync(OctopusServerEndpoint serverEndpoint, Cancellatio /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server repository. - /// + /// A cancellation token /// /// public async Task ExecuteAsync(OctopusAsyncRepository repository, CancellationToken token = default) @@ -166,7 +166,7 @@ public async Task ExecuteAsync(OctopusAsyncRepository repository, CancellationTo /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server repository. - /// + /// A cancellation token /// /// public abstract Task ExecuteAsync(IOctopusSpaceAsyncRepository repository, CancellationToken token = default); diff --git a/source/Octopus.Client/Operations/RegisterWorkerOperation.cs b/source/Octopus.Client/Operations/RegisterWorkerOperation.cs index dce8dd246..ee73a8916 100644 --- a/source/Octopus.Client/Operations/RegisterWorkerOperation.cs +++ b/source/Octopus.Client/Operations/RegisterWorkerOperation.cs @@ -90,7 +90,7 @@ WorkerResource GetWorker(IOctopusSpaceRepository repository) /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy server repository. - /// + /// A cancellation token /// /// public override async Task ExecuteAsync(IOctopusSpaceAsyncRepository repository, CancellationToken token = default) diff --git a/source/Octopus.Client/Repositories/Async/CertificateRepository.cs b/source/Octopus.Client/Repositories/Async/CertificateRepository.cs index 10e0c6863..d8645feb5 100644 --- a/source/Octopus.Client/Repositories/Async/CertificateRepository.cs +++ b/source/Octopus.Client/Repositories/Async/CertificateRepository.cs @@ -14,7 +14,7 @@ public interface ICertificateRepository : IResourceRepository, IGetThe format of the exported certificate. If null, the certificate will be exported exactly as it was originally uploaded (including with original password). /// Password for the exported file. This value is only used if exporting to PCKS#12 or PEM formats. /// Specifies whether the certificate private-key (if present) should be included in the exported file. This value is only be used when exporting to PEM format. - /// + /// A cancellation token /// The exported certificate data. Task Export(CertificateResource certificate, CertificateFormat? format = null, string password = null, bool includePrivateKey = false, CancellationToken token = default); @@ -24,7 +24,7 @@ public interface ICertificateRepository : IResourceRepository, IGetThe certificate to export. /// Specifies whether the certificate private-key (if present) should be included in the exported file. /// Options specifying which certificates should be included when chain certificates are present - /// + /// A cancellation token /// The exported certificate in PEM format Task ExportAsPem(CertificateResource certificate, bool includePrivateKey = false, CertificateExportPemOptions pemOptions = CertificateExportPemOptions.PrimaryOnly, CancellationToken token = default); @@ -36,7 +36,7 @@ public interface ICertificateRepository : IResourceRepository, IGetThe certificate to be replaced /// The new base64-encoded certificate-data /// The new password - /// + /// A cancellation token /// The replaced certificate. The ReplacedBy property will contain the ID of the new certificate (which will be the previous ID of the replaced certificate). Task Replace(CertificateResource certificate, string certificateData, string password, CancellationToken token = default); diff --git a/source/Octopus.Client/Repositories/Async/DashboardRepository.cs b/source/Octopus.Client/Repositories/Async/DashboardRepository.cs index 9252ba9e2..cba161636 100644 --- a/source/Octopus.Client/Repositories/Async/DashboardRepository.cs +++ b/source/Octopus.Client/Repositories/Async/DashboardRepository.cs @@ -12,7 +12,7 @@ public interface IDashboardRepository /// /// /// options for DashboardResource Items property - /// + /// A cancellation token Task GetDynamicDashboard(string[] projects, string[] environments, DashboardItemsOptions dashboardItemsOptions = DashboardItemsOptions.IncludeCurrentDeploymentOnly, CancellationToken token = default); } diff --git a/source/Octopus.Client/Repositories/Async/DeploymentRepository.cs b/source/Octopus.Client/Repositories/Async/DeploymentRepository.cs index 874eb3c1f..0c792f11a 100644 --- a/source/Octopus.Client/Repositories/Async/DeploymentRepository.cs +++ b/source/Octopus.Client/Repositories/Async/DeploymentRepository.cs @@ -16,7 +16,7 @@ public interface IDeploymentRepository : IGet, ICreate /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) - /// + /// A cancellation token /// Task> FindBy(string[] projects, string[] environments, int skip = 0, int? take = null, CancellationToken token = default); diff --git a/source/Octopus.Client/Repositories/Async/EventRepository.cs b/source/Octopus.Client/Repositories/Async/EventRepository.cs index 56922acf5..801d2ac09 100644 --- a/source/Octopus.Client/Repositories/Async/EventRepository.cs +++ b/source/Octopus.Client/Repositories/Async/EventRepository.cs @@ -40,7 +40,7 @@ Task> List(int skip = 0, /// /// /// - /// + /// A cancellation token /// Task> List(int skip = 0, int? take = null, diff --git a/source/Octopus.Client/Repositories/Async/InterruptionRepository.cs b/source/Octopus.Client/Repositories/Async/InterruptionRepository.cs index 9dcb69d93..d5eacfa9f 100644 --- a/source/Octopus.Client/Repositories/Async/InterruptionRepository.cs +++ b/source/Octopus.Client/Repositories/Async/InterruptionRepository.cs @@ -14,7 +14,7 @@ public interface IInterruptionRepository : IGet /// Number of records to take (First supported in Server 3.14.15) /// /// - /// + /// A cancellation token /// Task> List(int skip = 0, int? take = null, bool pendingOnly = false, string regardingDocumentId = null, CancellationToken token = default); Task Submit(InterruptionResource interruption, CancellationToken token = default); diff --git a/source/Octopus.Client/Repositories/Async/MachineRepository.cs b/source/Octopus.Client/Repositories/Async/MachineRepository.cs index aa51aa87b..2f11977dd 100644 --- a/source/Octopus.Client/Repositories/Async/MachineRepository.cs +++ b/source/Octopus.Client/Repositories/Async/MachineRepository.cs @@ -87,7 +87,7 @@ public async Task> FindByThumbprint(string thumbprint, Can /// Gets all tasks involving the specified machine /// /// - /// + /// A cancellation token /// public Task> GetTasks(MachineResource machine, CancellationToken token = default) => GetTasks(machine, new { skip = 0 }, token); @@ -98,7 +98,7 @@ public async Task> FindByThumbprint(string thumbprint, Can /// /// /// - /// + /// A cancellation token /// public async Task> GetTasks(MachineResource machine, object pathParameters, CancellationToken token = default) { diff --git a/source/Octopus.Client/Repositories/Async/ReleaseRepository.cs b/source/Octopus.Client/Repositories/Async/ReleaseRepository.cs index fae2832ab..986932947 100644 --- a/source/Octopus.Client/Repositories/Async/ReleaseRepository.cs +++ b/source/Octopus.Client/Repositories/Async/ReleaseRepository.cs @@ -13,7 +13,7 @@ public interface IReleaseRepository : IGet, ICreate /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) - /// + /// A cancellation token /// Task> GetDeployments(ReleaseResource release, int skip = 0, int? take = null, CancellationToken token = default); /// @@ -22,7 +22,7 @@ public interface IReleaseRepository : IGet, ICreate /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) - /// + /// A cancellation token /// Task> GetArtifacts(ReleaseResource release, int skip = 0, int? take = null, CancellationToken token = default); Task GetTemplate(ReleaseResource release, CancellationToken token = default); diff --git a/source/Octopus.Client/Repositories/Async/RunbookRunRepository.cs b/source/Octopus.Client/Repositories/Async/RunbookRunRepository.cs index 4e18c19ef..bc3c5161d 100644 --- a/source/Octopus.Client/Repositories/Async/RunbookRunRepository.cs +++ b/source/Octopus.Client/Repositories/Async/RunbookRunRepository.cs @@ -17,7 +17,7 @@ public interface IRunbookRunRepository : IGet, ICreate /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) - /// + /// A cancellation token /// Task> FindBy(string[] projects, string[] runbooks, string[] environments, int skip = 0, int? take = null, CancellationToken token = default); Task Paginate(string[] projects, string[] runbooks, string[] environments, Func, bool> getNextPage, CancellationToken token = default); diff --git a/source/Octopus.Client/Repositories/Async/RunbookSnapshotRepository.cs b/source/Octopus.Client/Repositories/Async/RunbookSnapshotRepository.cs index 69cec8251..05b0d3f84 100644 --- a/source/Octopus.Client/Repositories/Async/RunbookSnapshotRepository.cs +++ b/source/Octopus.Client/Repositories/Async/RunbookSnapshotRepository.cs @@ -13,7 +13,7 @@ public interface IRunbookSnapshotRepository : IGet, ICr /// /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) - /// + /// A cancellation token /// Task> GetRunbookRuns(RunbookSnapshotResource runbookSnapshot, int skip = 0, int? take = null, CancellationToken token = default); /// @@ -22,7 +22,7 @@ public interface IRunbookSnapshotRepository : IGet, ICr /// /// Number of records to skip /// Number of records to take (First supported in Server 3.14.15) - /// + /// A cancellation token /// Task> GetArtifacts(RunbookSnapshotResource runbookSnapshot, int skip = 0, int? take = null, CancellationToken token = default); Task GetTemplate(RunbookSnapshotResource runbookSnapshot, CancellationToken token = default); diff --git a/source/Octopus.Client/Repositories/Async/TaskRepository.cs b/source/Octopus.Client/Repositories/Async/TaskRepository.cs index 2a1e668e1..a739d6e63 100644 --- a/source/Octopus.Client/Repositories/Async/TaskRepository.cs +++ b/source/Octopus.Client/Repositories/Async/TaskRepository.cs @@ -25,7 +25,7 @@ public interface ITaskRepository : IPaginate, IGet, /// Gets all the active tasks (optionally limited to pageSize) /// /// Number of items per page, setting to less than the total items still retreives all items, but uses multiple requests reducing memory load on the server - /// + /// A cancellation token /// Task> GetAllActive(int pageSize = int.MaxValue, CancellationToken token = default); @@ -34,7 +34,7 @@ public interface ITaskRepository : IPaginate, IGet, /// /// /// - /// + /// A cancellation token /// Task GetActiveWithSummary(int pageSize = int.MaxValue, int skip = 0, CancellationToken token = default); @@ -43,7 +43,7 @@ public interface ITaskRepository : IPaginate, IGet, /// /// /// - /// + /// A cancellation token /// Task GetAllWithSummary(int pageSize = int.MaxValue, int skip = 0, CancellationToken token = default); diff --git a/source/Octopus.Client/Repositories/Async/TenantRepository.cs b/source/Octopus.Client/Repositories/Async/TenantRepository.cs index 54b06c2c5..a696ed247 100644 --- a/source/Octopus.Client/Repositories/Async/TenantRepository.cs +++ b/source/Octopus.Client/Repositories/Async/TenantRepository.cs @@ -39,7 +39,7 @@ public Task GetVariables(TenantResource tenant, Cancella /// /// /// Number of items per page, setting to less than the total items still retreives all items, but uses multiple requests reducing memory load on the server - /// + /// A cancellation token /// public async Task> FindAll(string name, string[] tags, int pageSize = int.MaxValue, CancellationToken token = default) {