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 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 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 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..6d6e986de 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; @@ -16,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; } @@ -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/IOctopusAsyncClient.cs b/source/Octopus.Client/IOctopusAsyncClient.cs index da9dcf279..6d547ac0d 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. + /// A cancellation token /// The collection of resources from the server. - Task> List(string path, object pathParameters = null); + 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. @@ -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. + /// A cancellation token /// The collection of resources from the server. - Task> ListAll(string path, object pathParameters = null); + 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. @@ -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. /// + /// A cancellation token /// The collection of resources from the server. - Task Paginate(string path, Func, bool> getNextPage); + 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. @@ -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. /// + /// A cancellation token /// 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); /// /// 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. + /// A cancellation token /// The resource from the server. - Task Get(string path, object pathParameters = null); + 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 @@ -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. + /// A cancellation token /// 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); /// /// 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); + /// A cancellation token + 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. @@ -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); + /// A cancellation token + 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. @@ -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); + /// A cancellation token + Task Post(string path, CancellationToken token = default); /// /// Sends a command to a resource at the given URI on the server using the PUT verb. @@ -251,24 +261,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. - /// The resource to create. - Task Put(string path, TResource resource); - - /// - /// 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. - Task Put(string path); + /// A cancellation token + Task Put(string path, CancellationToken token = default); /// /// Sends a command to a resource at the given URI on the server using the PUT verb. @@ -286,7 +280,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); + /// A cancellation token + 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 @@ -305,8 +300,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. + /// A cancellation token /// 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); /// /// Deletes the resource at the given URI from the server using a the DELETE verb. Deletes in Octopus happen @@ -327,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 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); + 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. @@ -345,15 +342,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 cancellation token /// 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); /// /// 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); + /// A cancellation token + Task PutContent(string path, Stream contentStream, CancellationToken token = default); Uri QualifyUri(string path, object parameters = null); @@ -361,14 +360,16 @@ public interface IOctopusAsyncClient : IDisposable /// Sign in /// /// + /// A cancellation token /// - Task SignIn(LoginCommand loginCommand); + Task SignIn(LoginCommand loginCommand, CancellationToken token = default); /// /// Sign out /// + /// A cancellation token /// - Task SignOut(); + 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 096e01ba0..b3b8d20dd 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) { 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) { - 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. + /// A cancellation token /// /// 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) { 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) { - 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. + /// A cancellation token /// /// 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) { var resources = new List(); await Paginate(path, pathParameters, r => { resources.AddRange(r.Items); return true; - }).ConfigureAwait(false); + }, token).ConfigureAwait(false); return resources; } @@ -285,13 +289,14 @@ 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) + /// A cancellation token + public async Task Paginate(string path, object pathParameters, Func, bool> getNextPage, CancellationToken token = default) { - 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")) { - page = await List(page.Link("Page.Next")).ConfigureAwait(false); + page = await List(page.Link("Page.Next"), token).ConfigureAwait(false); } } @@ -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) + /// A cancellation token + public Task Paginate(string path, Func, bool> getNextPage, CancellationToken token = default) { - 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. + /// A cancellation token /// /// 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) { 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) + /// A cancellation token + public Task Post(string path, TResource resource, object pathParameters = null, CancellationToken token = default) { 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) + /// A cancellation token + 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).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) + /// A cancellation token + public Task Post(string path, CancellationToken token = default) { var uri = QualifyUri(path); - return DispatchRequest(new OctopusRequest("POST", uri), false); + return DispatchRequest(new OctopusRequest("POST", uri), false, token); } /// @@ -382,33 +392,12 @@ public Task Post(string path) /// 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) - { - var uri = QualifyUri(path); - - return DispatchRequest(new OctopusRequest("PUT", uri, requestResource: resource), false); - } - - /// - /// 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. - public Task Put(string path) + /// A cancellation token + public Task Put(string path, CancellationToken token = default) { var uri = QualifyUri(path); - return DispatchRequest(new OctopusRequest("PUT", uri), false); + return DispatchRequest(new OctopusRequest("PUT", uri), false, token); } /// @@ -418,11 +407,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) + /// A cancellation token + public Task Put(string path, TResource resource, object pathParameters = null, CancellationToken token = default) { 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 +421,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) + /// A cancellation token + public Task Delete(string path, object pathParameters = null, object resource = null, CancellationToken token = default) { var uri = QualifyUri(path, pathParameters); - return DispatchRequest(new OctopusRequest("DELETE", uri, resource), true); + return DispatchRequest(new OctopusRequest("DELETE", uri, resource), true, token); } /// @@ -446,15 +437,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. + /// A cancellation token /// /// 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) { 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 +465,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 cancellation token /// 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) { 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 +479,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) + /// A cancellation token + public Task PutContent(string path, Stream contentStream, CancellationToken token = default) { 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 +496,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 +534,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); diff --git a/source/Octopus.Client/Operations/IRegisterMachineOperationBase.cs b/source/Octopus.Client/Operations/IRegisterMachineOperationBase.cs index 0b6d56944..50cda4706 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); + /// A cancellation token + Task ExecuteAsync(OctopusServerEndpoint serverEndpoint, CancellationToken token = default); /// /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy repository. - Task ExecuteAsync(OctopusAsyncRepository repository); + /// A cancellation token + Task ExecuteAsync(OctopusAsyncRepository repository, CancellationToken token = default); /// /// Executes the operation against the specified Octopus Deploy server. /// /// The Octopus Deploy repository. - Task ExecuteAsync(IOctopusSpaceAsyncRepository 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 cf6d7bb2f..6534fccf5 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. + /// A cancellation token /// /// - 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(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..1141fccf7 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. + /// A cancellation token /// /// - 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. + /// A cancellation token /// /// - 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. + /// A cancellation token /// /// - 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..ee73a8916 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. + /// A cancellation token /// /// - 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."); } 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..d8645feb5 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. + /// A cancellation token /// 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 + /// A cancellation token /// 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 + /// 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); + 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..cba161636 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); + /// A cancellation token + 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..0c792f11a 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) + /// A cancellation token /// - 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..801d2ac09 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, /// /// /// + /// A cancellation token /// 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..d5eacfa9f 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) /// /// + /// A cancellation token /// - 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..2f11977dd 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 /// /// + /// A cancellation token /// - 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) /// /// /// + /// A cancellation token /// - 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..986932947 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) + /// A cancellation token /// - 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) + /// A cancellation token /// - 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..bc3c5161d 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) + /// A cancellation token /// - 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..05b0d3f84 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) + /// A cancellation token /// - 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) + /// A cancellation token /// - 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..a739d6e63 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 + /// A cancellation token /// - 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 /// /// /// + /// A cancellation token /// - 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 /// /// /// + /// A cancellation token /// - 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..a696ed247 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 + /// A cancellation token /// - 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/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 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); } } }