Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cancellation token parameter to async methods #549

Closed
wants to merge 10 commits into from
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

using FluentAssertions;
Expand Down Expand Up @@ -109,7 +110,7 @@ public async Task ShouldCreateNewMachine()
await client.Received().Create("/api/machines", Arg.Is<MachineResource>(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<object>(), Arg.Is(default(CancellationToken)))
.ConfigureAwait(false);
}

Expand Down Expand Up @@ -153,7 +154,7 @@ public async Task ShouldUpdateExistingMachineWhenForceIsEnabled()
await client.Received().Update("/machines/whatever/1", Arg.Is<MachineResource>(m =>
m.Id == "machines/84"
&& m.Name == "Mymachine"
&& m.EnvironmentIds.First() == "environments-2")).ConfigureAwait(false);
&& m.EnvironmentIds.First() == "environments-2"), Arg.Any<object>(), Arg.Is(default(CancellationToken))).ConfigureAwait(false);
}

[Test]
Expand All @@ -177,7 +178,7 @@ public async Task ShouldCreateWhenCantDeserializeMachines()
await client.Received().Create("/api/machines", Arg.Is<MachineResource>(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<object>(), Arg.Is(default(CancellationToken))).ConfigureAwait(false);
}

[Test]
Expand All @@ -202,7 +203,7 @@ await client.Received().Update("/machines/whatever/1", Arg.Is<MachineResource>(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<object>(), Arg.Is(default(CancellationToken))).ConfigureAwait(false);
}

[Test]
Expand All @@ -228,7 +229,7 @@ await client.Received().Update("/machines/whatever/1", Arg.Is<MachineResource>(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<object>(), Arg.Is(default(CancellationToken))).ConfigureAwait(false);
}
}
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

17 changes: 9 additions & 8 deletions source/Octopus.Client/Editors/Async/AccountEditor.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Octopus.Client.Model.Accounts;
using Octopus.Client.Model.Accounts.Usages;
Expand All @@ -19,15 +20,15 @@ public AccountEditor(IAccountRepository repository)

public TAccountResource Instance { get; private set; }

public async Task<TAccountEditor> CreateOrModify(string name)
public async Task<TAccountEditor> CreateOrModify(string name, CancellationToken token = default)
{
var existing = await Repository.FindByName(name).ConfigureAwait(false);
if (existing == null)
{
Instance = (TAccountResource)await Repository.Create(new TAccountResource
{
Name = name
}).ConfigureAwait(false);
}, token: token).ConfigureAwait(false);
}
else
{
Expand All @@ -42,9 +43,9 @@ public async Task<TAccountEditor> CreateOrModify(string name)
return (TAccountEditor)this;
}

public async Task<TAccountEditor> FindByName(string name)
public async Task<TAccountEditor> 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");
Expand All @@ -68,15 +69,15 @@ public virtual TAccountEditor Customize(Action<TAccountResource> customize)
return (TAccountEditor)this;
}

public virtual async Task<TAccountEditor> Save()
public virtual async Task<TAccountEditor> 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<AccountUsageResource> Usages()
public Task<AccountUsageResource> Usages(CancellationToken token = default)
{
return Repository.Client.Get<AccountUsageResource>(Instance.Link("Usages"));
return Repository.Client.Get<AccountUsageResource>(Instance.Link("Usages"), token: token);
}
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -12,25 +13,25 @@ public AzureServicePrincipalAccountEditor(IAccountRepository repository) : base(
{
}

public Task<List<AzureServicePrincipalAccountResource.ResourceGroup>> ResourceGroups()
public Task<List<AzureServicePrincipalAccountResource.ResourceGroup>> ResourceGroups(CancellationToken token = default)
{
return Repository.Client.Get<List<AzureServicePrincipalAccountResource.ResourceGroup>>(Instance.Link("ResourceGroups"));
return Repository.Client.Get<List<AzureServicePrincipalAccountResource.ResourceGroup>>(Instance.Link("ResourceGroups"), token: token);
}

public Task<List<AzureServicePrincipalAccountResource.WebSite>> WebSites()
public Task<List<AzureServicePrincipalAccountResource.WebSite>> WebSites(CancellationToken token = default)
{
return Repository.Client.Get<List<AzureServicePrincipalAccountResource.WebSite>>(Instance.Link("WebSites"));
return Repository.Client.Get<List<AzureServicePrincipalAccountResource.WebSite>>(Instance.Link("WebSites"), token: token);
}

public Task<List<AzureServicePrincipalAccountResource.WebSlot>> WebSlots(AzureServicePrincipalAccountResource.WebSite site)
public Task<List<AzureServicePrincipalAccountResource.WebSlot>> WebSlots(AzureServicePrincipalAccountResource.WebSite site, CancellationToken token = default)
{
return Repository.Client.Get<List<AzureServicePrincipalAccountResource.WebSlot>>(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<List<AzureStorageAccount>> StorageAccounts()
public Task<List<AzureStorageAccount>> StorageAccounts(CancellationToken token = default)
{
return Repository.Client.Get<List<AzureStorageAccount>>(Instance.Link("StorageAccounts"));
return Repository.Client.Get<List<AzureStorageAccount>>(Instance.Link("StorageAccounts"), token: token);
}
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -11,32 +12,32 @@ public AzureSubscriptionAccountEditor(IAccountRepository repository) : base(repo
{
}

public Task<List<AzureStorageAccount>> StorageAccounts(AzureSubscriptionAccountResource account)
public Task<List<AzureStorageAccount>> StorageAccounts(AzureSubscriptionAccountResource account, CancellationToken token = default)
{
return Repository.Client.Get<List<AzureStorageAccount>>(account.Link("StorageAccounts"));
return Repository.Client.Get<List<AzureStorageAccount>>(account.Link("StorageAccounts"), token: token);
}

public Task<List<AzureSubscriptionAccountResource.WebSite>> WebSites(AzureSubscriptionAccountResource account)
public Task<List<AzureSubscriptionAccountResource.WebSite>> WebSites(AzureSubscriptionAccountResource account, CancellationToken token = default)
{
return Repository.Client.Get<List<AzureSubscriptionAccountResource.WebSite>>(account.Link("WebSites"));
return Repository.Client.Get<List<AzureSubscriptionAccountResource.WebSite>>(account.Link("WebSites"), token: token);
}

public Task<List<AzureSubscriptionAccountResource.WebSite>> WebSites()
public Task<List<AzureSubscriptionAccountResource.WebSite>> WebSites(CancellationToken token = default)
{
return Repository.Client.Get<List<AzureSubscriptionAccountResource.WebSite>>(Instance.Link("WebSites"));
return Repository.Client.Get<List<AzureSubscriptionAccountResource.WebSite>>(Instance.Link("WebSites"), token: token);
}

public Task<List<AzureSubscriptionAccountResource.WebSlot>> WebSlots(AzureSubscriptionAccountResource account,
AzureSubscriptionAccountResource.WebSite site)
AzureSubscriptionAccountResource.WebSite site, CancellationToken token = default)
{
return Repository.Client.Get<List<AzureSubscriptionAccountResource.WebSlot>>(account.Link("WebSlots"),
new { resourceGroupName = site.ResourceGroup, webSiteName = site.WebSpace});
new { resourceGroupName = site.ResourceGroup, webSiteName = site.WebSpace}, token);
}

public Task<List<AzureSubscriptionAccountResource.WebSlot>> WebSlots(AzureSubscriptionAccountResource.WebSite site)
public Task<List<AzureSubscriptionAccountResource.WebSlot>> WebSlots(AzureSubscriptionAccountResource.WebSite site, CancellationToken token = default)
{
return Repository.Client.Get<List<AzureSubscriptionAccountResource.WebSlot>>(Instance.Link("WebSlots"),
new { resourceGroupName = site.ResourceGroup, webSiteName = site.WebSpace });
new { resourceGroupName = site.ResourceGroup, webSiteName = site.WebSpace }, token: token);
}
}
}
17 changes: 9 additions & 8 deletions source/Octopus.Client/Editors/Async/CertificateEditor.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Octopus.Client.Model;
using Octopus.Client.Repositories.Async;
Expand All @@ -16,9 +17,9 @@ public CertificateEditor(ICertificateRepository repository)

public CertificateResource Instance { get; private set; }

public async Task<CertificateEditor> Create(string name, string certificateData)
public async Task<CertificateEditor> 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");
Expand All @@ -29,9 +30,9 @@ public async Task<CertificateEditor> Create(string name, string certificateData)
return this;
}

public async Task<CertificateEditor> FindByName(string name)
public async Task<CertificateEditor> 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");
Expand All @@ -50,15 +51,15 @@ public CertificateEditor Customize(Action<CertificateResource> customize)
return this;
}

public async Task<CertificateEditor> Save()
public async Task<CertificateEditor> Save(CancellationToken token = default)
{
Instance = await repository.Modify(Instance).ConfigureAwait(false);
Instance = await repository.Modify(Instance, token).ConfigureAwait(false);
return this;
}

public async Task<CertificateUsageResource> Usages()
public async Task<CertificateUsageResource> Usages(CancellationToken token = default)
{
return await repository.Client.Get<CertificateUsageResource>(Instance.Link("Usages")).ConfigureAwait(false);
return await repository.Client.Get<CertificateUsageResource>(Instance.Link("Usages"), token: token).ConfigureAwait(false);
}
}
}
21 changes: 11 additions & 10 deletions source/Octopus.Client/Editors/Async/ChannelEditor.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Octopus.Client.Model;
using Octopus.Client.Repositories.Async;
Expand All @@ -16,31 +17,31 @@ public ChannelEditor(IChannelRepository repository)

public ChannelResource Instance { get; private set; }

public async Task<ChannelEditor> CreateOrModify(ProjectResource project, string name)
public async Task<ChannelEditor> 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)
{
Instance = await repository.Create(new ChannelResource
{
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<ChannelEditor> CreateOrModify(ProjectResource project, string name, string description)
public async Task<ChannelEditor> 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)
{
Expand All @@ -49,14 +50,14 @@ public async Task<ChannelEditor> 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;
Expand Down Expand Up @@ -116,9 +117,9 @@ public ChannelEditor Customize(Action<ChannelResource> customize)
return this;
}

public async Task<ChannelEditor> Save()
public async Task<ChannelEditor> Save(CancellationToken token = default)
{
Instance = await repository.Modify(Instance).ConfigureAwait(false);
Instance = await repository.Modify(Instance, token).ConfigureAwait(false);
return this;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Octopus.Client.Model;
using Octopus.Client.Repositories.Async;
Expand All @@ -16,9 +17,9 @@ public DeploymentProcessEditor(IDeploymentProcessRepository repository)

public DeploymentProcessResource Instance { get; private set; }

public async Task<DeploymentProcessEditor> Load(string id)
public async Task<DeploymentProcessEditor> Load(string id, CancellationToken token = default)
{
Instance = await repository.Get(id).ConfigureAwait(false);
Instance = await repository.Get(id, token).ConfigureAwait(false);
return this;
}

Expand Down Expand Up @@ -50,9 +51,9 @@ public DeploymentProcessEditor Customize(Action<DeploymentProcessResource> custo
return this;
}

public async Task<DeploymentProcessEditor> Save()
public async Task<DeploymentProcessEditor> Save(CancellationToken token = default)
{
Instance = await repository.Modify(Instance).ConfigureAwait(false);
Instance = await repository.Modify(Instance, token).ConfigureAwait(false);
return this;
}
}
Expand Down
Loading