diff --git a/source/Calamari.Aws/Calamari.Aws.csproj b/source/Calamari.Aws/Calamari.Aws.csproj
index 435e3e63b5..9e0ebb4b50 100644
--- a/source/Calamari.Aws/Calamari.Aws.csproj
+++ b/source/Calamari.Aws/Calamari.Aws.csproj
@@ -31,7 +31,7 @@
-
+
diff --git a/source/Calamari.Aws/Commands/ApplyCloudFormationChangesetCommand.cs b/source/Calamari.Aws/Commands/ApplyCloudFormationChangesetCommand.cs
index 8d13e28968..79946aeec9 100644
--- a/source/Calamari.Aws/Commands/ApplyCloudFormationChangesetCommand.cs
+++ b/source/Calamari.Aws/Commands/ApplyCloudFormationChangesetCommand.cs
@@ -6,7 +6,7 @@
using Calamari.Aws.Deployment.Conventions;
using Calamari.Aws.Integration.CloudFormation;
using Calamari.Aws.Util;
-using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Commands.Support;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.Aws/Commands/CreateAwsS3Command.cs b/source/Calamari.Aws/Commands/CreateAwsS3Command.cs
index 0f57ccc718..dcbc8afc0a 100644
--- a/source/Calamari.Aws/Commands/CreateAwsS3Command.cs
+++ b/source/Calamari.Aws/Commands/CreateAwsS3Command.cs
@@ -9,6 +9,7 @@
using Calamari.Aws.Integration.CloudFormation.Templates;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Commands.Support;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing;
diff --git a/source/Calamari.Aws/Commands/DeleteCloudFormationCommand.cs b/source/Calamari.Aws/Commands/DeleteCloudFormationCommand.cs
index 9dd80ab868..8691ef445b 100644
--- a/source/Calamari.Aws/Commands/DeleteCloudFormationCommand.cs
+++ b/source/Calamari.Aws/Commands/DeleteCloudFormationCommand.cs
@@ -7,6 +7,7 @@
using Calamari.Aws.Integration.CloudFormation;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Commands.Support;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.Aws/Commands/DeployAwsCloudFormationCommand.cs b/source/Calamari.Aws/Commands/DeployAwsCloudFormationCommand.cs
index 30fd869a44..09b0eca2ca 100644
--- a/source/Calamari.Aws/Commands/DeployAwsCloudFormationCommand.cs
+++ b/source/Calamari.Aws/Commands/DeployAwsCloudFormationCommand.cs
@@ -11,6 +11,7 @@
using Calamari.Aws.Integration.CloudFormation.Templates;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Commands;
using Calamari.Common.Commands;
using Calamari.Common.Features.Behaviours;
diff --git a/source/Calamari.Aws/Commands/DeployEcsServiceCommand.cs b/source/Calamari.Aws/Commands/DeployEcsServiceCommand.cs
index 2bda1b7d0e..76f34370fe 100644
--- a/source/Calamari.Aws/Commands/DeployEcsServiceCommand.cs
+++ b/source/Calamari.Aws/Commands/DeployEcsServiceCommand.cs
@@ -3,6 +3,7 @@
using Calamari.Aws.Inputs.Ecs;
using Calamari.Aws.Integration.Ecs;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Commands.Support;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.Aws/Commands/EcsClusterHealthCheck.cs b/source/Calamari.Aws/Commands/EcsClusterHealthCheck.cs
index 3f11efd137..bab862d869 100644
--- a/source/Calamari.Aws/Commands/EcsClusterHealthCheck.cs
+++ b/source/Calamari.Aws/Commands/EcsClusterHealthCheck.cs
@@ -5,6 +5,7 @@
using Calamari.Aws.Deployment.Conventions;
using Calamari.Aws.Integration.Ecs;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Commands.Support;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.Aws/Commands/UpdateEcsServiceCommand.cs b/source/Calamari.Aws/Commands/UpdateEcsServiceCommand.cs
index d27ffe93e9..6f51f9ba51 100644
--- a/source/Calamari.Aws/Commands/UpdateEcsServiceCommand.cs
+++ b/source/Calamari.Aws/Commands/UpdateEcsServiceCommand.cs
@@ -4,6 +4,7 @@
using Calamari.Aws.Deployment.Conventions;
using Calamari.Aws.Integration.Ecs;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Commands.Support;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing;
diff --git a/source/Calamari.Aws/Commands/UploadAwsS3Command.cs b/source/Calamari.Aws/Commands/UploadAwsS3Command.cs
index b2d2d677e4..f987416615 100644
--- a/source/Calamari.Aws/Commands/UploadAwsS3Command.cs
+++ b/source/Calamari.Aws/Commands/UploadAwsS3Command.cs
@@ -4,6 +4,7 @@
using Calamari.Aws.Deployment.Conventions;
using Calamari.Aws.Integration.S3;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Commands;
using Calamari.Commands.Support;
using Calamari.Common.Commands;
diff --git a/source/Calamari.Aws/Deployment/Conventions/CreateS3BucketConvention.cs b/source/Calamari.Aws/Deployment/Conventions/CreateS3BucketConvention.cs
index ba4735c797..7dc721959a 100644
--- a/source/Calamari.Aws/Deployment/Conventions/CreateS3BucketConvention.cs
+++ b/source/Calamari.Aws/Deployment/Conventions/CreateS3BucketConvention.cs
@@ -4,6 +4,7 @@
using Amazon.S3.Model;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.Aws/Deployment/Conventions/DeleteCloudFormationStackConvention.cs b/source/Calamari.Aws/Deployment/Conventions/DeleteCloudFormationStackConvention.cs
index 1a433b382c..f502adba6f 100644
--- a/source/Calamari.Aws/Deployment/Conventions/DeleteCloudFormationStackConvention.cs
+++ b/source/Calamari.Aws/Deployment/Conventions/DeleteCloudFormationStackConvention.cs
@@ -3,6 +3,7 @@
using Amazon.CloudFormation;
using Calamari.Aws.Integration.CloudFormation;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.Aws/Deployment/Conventions/DeployAwsCloudFormationConvention.cs b/source/Calamari.Aws/Deployment/Conventions/DeployAwsCloudFormationConvention.cs
index 2ae4c62bc2..505c81a870 100644
--- a/source/Calamari.Aws/Deployment/Conventions/DeployAwsCloudFormationConvention.cs
+++ b/source/Calamari.Aws/Deployment/Conventions/DeployAwsCloudFormationConvention.cs
@@ -8,6 +8,7 @@
using Calamari.Aws.Integration.CloudFormation.Templates;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.Aws/Deployment/Conventions/DeployEcsServiceConvention.cs b/source/Calamari.Aws/Deployment/Conventions/DeployEcsServiceConvention.cs
index 42d3a3f974..fd06dfe1ab 100644
--- a/source/Calamari.Aws/Deployment/Conventions/DeployEcsServiceConvention.cs
+++ b/source/Calamari.Aws/Deployment/Conventions/DeployEcsServiceConvention.cs
@@ -8,6 +8,7 @@
using Calamari.Aws.Integration.Ecs.Deploy;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
diff --git a/source/Calamari.Aws/Deployment/Conventions/LogAwsUserInfoConvention.cs b/source/Calamari.Aws/Deployment/Conventions/LogAwsUserInfoConvention.cs
index 6e597acbc2..2e0dfc75d7 100644
--- a/source/Calamari.Aws/Deployment/Conventions/LogAwsUserInfoConvention.cs
+++ b/source/Calamari.Aws/Deployment/Conventions/LogAwsUserInfoConvention.cs
@@ -8,6 +8,7 @@
using Amazon.SecurityToken.Model;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.Aws/Deployment/Conventions/SetEcsOutputVariablesConvention.cs b/source/Calamari.Aws/Deployment/Conventions/SetEcsOutputVariablesConvention.cs
index 148595f1ca..7ce98d1a86 100644
--- a/source/Calamari.Aws/Deployment/Conventions/SetEcsOutputVariablesConvention.cs
+++ b/source/Calamari.Aws/Deployment/Conventions/SetEcsOutputVariablesConvention.cs
@@ -4,6 +4,7 @@
using Amazon.CloudFormation.Model;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
diff --git a/source/Calamari.Aws/Deployment/Conventions/UpdateEcsServiceConvention.cs b/source/Calamari.Aws/Deployment/Conventions/UpdateEcsServiceConvention.cs
index 31c221790e..bff5d008f7 100644
--- a/source/Calamari.Aws/Deployment/Conventions/UpdateEcsServiceConvention.cs
+++ b/source/Calamari.Aws/Deployment/Conventions/UpdateEcsServiceConvention.cs
@@ -6,6 +6,7 @@
using Amazon.ECS.Model;
using Calamari.Aws.Integration.Ecs;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
diff --git a/source/Calamari.Aws/Deployment/Conventions/UploadAwsS3Convention.cs b/source/Calamari.Aws/Deployment/Conventions/UploadAwsS3Convention.cs
index cb57eff33b..ad8a98ccb3 100644
--- a/source/Calamari.Aws/Deployment/Conventions/UploadAwsS3Convention.cs
+++ b/source/Calamari.Aws/Deployment/Conventions/UploadAwsS3Convention.cs
@@ -12,6 +12,7 @@
using Calamari.Aws.Integration.S3;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Features.Packages;
using Calamari.Common.Features.StructuredVariables;
diff --git a/source/Calamari.Aws/Integration/AwsAuthConvention.cs b/source/Calamari.Aws/Integration/AwsAuthConvention.cs
index 4d142b0ea1..026542a600 100644
--- a/source/Calamari.Aws/Integration/AwsAuthConvention.cs
+++ b/source/Calamari.Aws/Integration/AwsAuthConvention.cs
@@ -1,6 +1,7 @@
using System;
using System.Threading.Tasks;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
diff --git a/source/Calamari.Aws/Integration/AwsScriptWrapper.cs b/source/Calamari.Aws/Integration/AwsScriptWrapper.cs
index bb98c55ff8..a683caa5c6 100644
--- a/source/Calamari.Aws/Integration/AwsScriptWrapper.cs
+++ b/source/Calamari.Aws/Integration/AwsScriptWrapper.cs
@@ -3,6 +3,7 @@
using System.Threading.Tasks;
using Calamari.Aws.Deployment;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Features.Processes;
using Calamari.Common.Features.Scripting;
using Calamari.Common.Features.Scripts;
diff --git a/source/Calamari.Aws/Integration/CloudFormation/Templates/CloudFormationS3Template.cs b/source/Calamari.Aws/Integration/CloudFormation/Templates/CloudFormationS3Template.cs
index 2965c9123a..00b4052b77 100644
--- a/source/Calamari.Aws/Integration/CloudFormation/Templates/CloudFormationS3Template.cs
+++ b/source/Calamari.Aws/Integration/CloudFormation/Templates/CloudFormationS3Template.cs
@@ -11,6 +11,7 @@
using Calamari.Aws.Deployment;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.FileSystem;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.Aws/Integration/Ecs/EcsClientFactory.cs b/source/Calamari.Aws/Integration/Ecs/EcsClientFactory.cs
index 643f9e71f2..95559730da 100644
--- a/source/Calamari.Aws/Integration/Ecs/EcsClientFactory.cs
+++ b/source/Calamari.Aws/Integration/Ecs/EcsClientFactory.cs
@@ -1,6 +1,7 @@
using Amazon.ECS;
using Calamari.Aws.Util;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
namespace Calamari.Aws.Integration.Ecs;
diff --git a/source/Calamari.Aws/Util/ClientExtensions.cs b/source/Calamari.Aws/Util/ClientExtensions.cs
index 1821803448..60a2c1701a 100644
--- a/source/Calamari.Aws/Util/ClientExtensions.cs
+++ b/source/Calamari.Aws/Util/ClientExtensions.cs
@@ -4,6 +4,7 @@
using Amazon.S3;
using Amazon.SecurityToken;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Octopus.CoreUtilities.Extensions;
namespace Calamari.Aws.Util;
diff --git a/source/Calamari.Azure/AppServices/AzureTargetSite.cs b/source/Calamari.Azure/AppServices/AzureTargetSite.cs
index 1a07d338ea..7946541aff 100644
--- a/source/Calamari.Azure/AppServices/AzureTargetSite.cs
+++ b/source/Calamari.Azure/AppServices/AzureTargetSite.cs
@@ -3,6 +3,7 @@
using Azure.Core;
using Azure.ResourceManager.AppService;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
diff --git a/source/Calamari.Azure/AzureClient.cs b/source/Calamari.Azure/AzureClient.cs
index 1dd2bfbdfd..f43885106a 100644
--- a/source/Calamari.Azure/AzureClient.cs
+++ b/source/Calamari.Azure/AzureClient.cs
@@ -8,6 +8,7 @@
using Azure.Identity;
using Azure.ResourceManager;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
namespace Calamari.Azure
{
diff --git a/source/Calamari.Azure/Calamari.Azure.csproj b/source/Calamari.Azure/Calamari.Azure.csproj
index 35b6599c7f..e89dc3dd7a 100644
--- a/source/Calamari.Azure/Calamari.Azure.csproj
+++ b/source/Calamari.Azure/Calamari.Azure.csproj
@@ -16,6 +16,6 @@
-
+
diff --git a/source/Calamari.Azure/Kubernetes/Discovery/AzureKubernetesDiscoverer.cs b/source/Calamari.Azure/Kubernetes/Discovery/AzureKubernetesDiscoverer.cs
index 810365b0ce..e7fe9b17b3 100644
--- a/source/Calamari.Azure/Kubernetes/Discovery/AzureKubernetesDiscoverer.cs
+++ b/source/Calamari.Azure/Kubernetes/Discovery/AzureKubernetesDiscoverer.cs
@@ -7,6 +7,7 @@
using Azure.ResourceManager;
using Azure.ResourceManager.ContainerService;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Features.Discovery;
using Calamari.Common.Plumbing.Logging;
using Newtonsoft.Json;
diff --git a/source/Calamari.AzureAppService.Tests/AppServiceIntegrationTest.cs b/source/Calamari.AzureAppService.Tests/AppServiceIntegrationTest.cs
index 08dfb8a3b8..2b313ac003 100644
--- a/source/Calamari.AzureAppService.Tests/AppServiceIntegrationTest.cs
+++ b/source/Calamari.AzureAppService.Tests/AppServiceIntegrationTest.cs
@@ -15,6 +15,7 @@
using Calamari.Azure.AppServices;
using Calamari.AzureAppService.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Testing;
using Calamari.Testing.Azure;
using FluentAssertions;
diff --git a/source/Calamari.AzureAppService/Behaviors/AzureAppServiceAppSettingsBehaviour.cs b/source/Calamari.AzureAppService/Behaviors/AzureAppServiceAppSettingsBehaviour.cs
index 9edf2ae564..bb443c51db 100644
--- a/source/Calamari.AzureAppService/Behaviors/AzureAppServiceAppSettingsBehaviour.cs
+++ b/source/Calamari.AzureAppService/Behaviors/AzureAppServiceAppSettingsBehaviour.cs
@@ -10,6 +10,7 @@
using Calamari.Azure.AppServices;
using Calamari.AzureAppService.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Pipeline;
diff --git a/source/Calamari.AzureAppService/Behaviors/AzureAppServiceContainerDeployBehaviour.cs b/source/Calamari.AzureAppService/Behaviors/AzureAppServiceContainerDeployBehaviour.cs
index b8fa672353..3d0acbe952 100644
--- a/source/Calamari.AzureAppService/Behaviors/AzureAppServiceContainerDeployBehaviour.cs
+++ b/source/Calamari.AzureAppService/Behaviors/AzureAppServiceContainerDeployBehaviour.cs
@@ -6,6 +6,7 @@
using Calamari.Azure.AppServices;
using Calamari.AzureAppService.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Pipeline;
diff --git a/source/Calamari.AzureAppService/Behaviors/AzureAppServiceZipDeployBehaviour.cs b/source/Calamari.AzureAppService/Behaviors/AzureAppServiceZipDeployBehaviour.cs
index 865f90b66f..e3ecfa1dc8 100644
--- a/source/Calamari.AzureAppService/Behaviors/AzureAppServiceZipDeployBehaviour.cs
+++ b/source/Calamari.AzureAppService/Behaviors/AzureAppServiceZipDeployBehaviour.cs
@@ -17,6 +17,7 @@
using Calamari.Azure.AppServices;
using Calamari.AzureAppService.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.FeatureToggles;
using Calamari.Common.Plumbing.Extensions;
diff --git a/source/Calamari.AzureAppService/Behaviors/RestartAzureWebAppBehaviour.cs b/source/Calamari.AzureAppService/Behaviors/RestartAzureWebAppBehaviour.cs
index 1d535b0d31..121564f130 100644
--- a/source/Calamari.AzureAppService/Behaviors/RestartAzureWebAppBehaviour.cs
+++ b/source/Calamari.AzureAppService/Behaviors/RestartAzureWebAppBehaviour.cs
@@ -4,6 +4,7 @@
using Calamari.Azure.AppServices;
using Calamari.AzureAppService.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Pipeline;
diff --git a/source/Calamari.AzureAppService/Behaviors/TargetDiscoveryBehaviour.cs b/source/Calamari.AzureAppService/Behaviors/TargetDiscoveryBehaviour.cs
index 9fb90c6de4..6078a96bda 100644
--- a/source/Calamari.AzureAppService/Behaviors/TargetDiscoveryBehaviour.cs
+++ b/source/Calamari.AzureAppService/Behaviors/TargetDiscoveryBehaviour.cs
@@ -9,6 +9,7 @@
using Calamari.Azure;
using Calamari.AzureAppService.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Features.Discovery;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.AzureAppService/Calamari.AzureAppService.csproj b/source/Calamari.AzureAppService/Calamari.AzureAppService.csproj
index 3f9c626993..c98c758a59 100644
--- a/source/Calamari.AzureAppService/Calamari.AzureAppService.csproj
+++ b/source/Calamari.AzureAppService/Calamari.AzureAppService.csproj
@@ -25,7 +25,6 @@
-
diff --git a/source/Calamari.AzureAppService/HealthCheckCommand.cs b/source/Calamari.AzureAppService/HealthCheckCommand.cs
index 503d7fb24e..5a04549de6 100644
--- a/source/Calamari.AzureAppService/HealthCheckCommand.cs
+++ b/source/Calamari.AzureAppService/HealthCheckCommand.cs
@@ -6,6 +6,7 @@
using Calamari.Azure;
using Calamari.AzureAppService.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Pipeline;
using Octopus.CoreUtilities.Extensions;
diff --git a/source/Calamari.AzureResourceGroup.Tests/AzureResourceGroupActionHandlerFixture.cs b/source/Calamari.AzureResourceGroup.Tests/AzureResourceGroupActionHandlerFixture.cs
index 4400d992cc..0cf3b3b73b 100644
--- a/source/Calamari.AzureResourceGroup.Tests/AzureResourceGroupActionHandlerFixture.cs
+++ b/source/Calamari.AzureResourceGroup.Tests/AzureResourceGroupActionHandlerFixture.cs
@@ -8,6 +8,7 @@
using Azure.ResourceManager.Resources;
using Calamari.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Features.Deployment;
using Calamari.Common.Features.Scripts;
using Calamari.Common.Plumbing.Variables;
@@ -41,9 +42,9 @@ class AzureResourceGroupActionHandlerFixture
public async Task Setup()
{
var resourceManagementEndpointBaseUri =
- Environment.GetEnvironmentVariable(AccountVariables.ResourceManagementEndPoint) ?? DefaultVariables.ResourceManagementEndpoint;
+ Environment.GetEnvironmentVariable(AzureAccountVariables.ResourceManagementEndPoint) ?? DefaultVariables.ResourceManagementEndpoint;
var activeDirectoryEndpointBaseUri =
- Environment.GetEnvironmentVariable(AccountVariables.ActiveDirectoryEndPoint) ?? DefaultVariables.ActiveDirectoryEndpoint;
+ Environment.GetEnvironmentVariable(AzureAccountVariables.ActiveDirectoryEndPoint) ?? DefaultVariables.ActiveDirectoryEndpoint;
clientId = await ExternalVariables.Get(ExternalVariable.AzureSubscriptionClientId, cancellationToken);
clientSecret = await ExternalVariables.Get(ExternalVariable.AzureSubscriptionPassword, cancellationToken);
diff --git a/source/Calamari.AzureResourceGroup.Tests/DeployAzureBicepTemplateCommandFixture.cs b/source/Calamari.AzureResourceGroup.Tests/DeployAzureBicepTemplateCommandFixture.cs
index 6ce8922365..fe7030feaa 100644
--- a/source/Calamari.AzureResourceGroup.Tests/DeployAzureBicepTemplateCommandFixture.cs
+++ b/source/Calamari.AzureResourceGroup.Tests/DeployAzureBicepTemplateCommandFixture.cs
@@ -9,6 +9,7 @@
using Calamari.Azure;
using Calamari.AzureResourceGroup.Bicep;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Testing;
using Calamari.Testing.Azure;
using Calamari.Testing.Helpers;
@@ -39,9 +40,9 @@ class DeployAzureBicepTemplateCommandFixture
public async Task Setup()
{
var resourceManagementEndpointBaseUri =
- Environment.GetEnvironmentVariable(AccountVariables.ResourceManagementEndPoint) ?? DefaultVariables.ResourceManagementEndpoint;
+ Environment.GetEnvironmentVariable(AzureAccountVariables.ResourceManagementEndPoint) ?? DefaultVariables.ResourceManagementEndpoint;
var activeDirectoryEndpointBaseUri =
- Environment.GetEnvironmentVariable(AccountVariables.ActiveDirectoryEndPoint) ?? DefaultVariables.ActiveDirectoryEndpoint;
+ Environment.GetEnvironmentVariable(AzureAccountVariables.ActiveDirectoryEndPoint) ?? DefaultVariables.ActiveDirectoryEndpoint;
clientId = await ExternalVariables.Get(ExternalVariable.AzureSubscriptionClientId, cancellationToken);
clientSecret = await ExternalVariables.Get(ExternalVariable.AzureSubscriptionPassword, cancellationToken);
diff --git a/source/Calamari.AzureResourceGroup/Bicep/DeployBicepTemplateBehaviour.cs b/source/Calamari.AzureResourceGroup/Bicep/DeployBicepTemplateBehaviour.cs
index e5c4da7f7e..3dd52127cc 100644
--- a/source/Calamari.AzureResourceGroup/Bicep/DeployBicepTemplateBehaviour.cs
+++ b/source/Calamari.AzureResourceGroup/Bicep/DeployBicepTemplateBehaviour.cs
@@ -6,6 +6,7 @@
using Azure.ResourceManager.Resources.Models;
using Calamari.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Features.Processes;
using Calamari.Common.Plumbing.Extensions;
diff --git a/source/Calamari.AzureResourceGroup/DeployAzureResourceGroupBehaviour.cs b/source/Calamari.AzureResourceGroup/DeployAzureResourceGroupBehaviour.cs
index 21a2423b9f..c156876916 100644
--- a/source/Calamari.AzureResourceGroup/DeployAzureResourceGroupBehaviour.cs
+++ b/source/Calamari.AzureResourceGroup/DeployAzureResourceGroupBehaviour.cs
@@ -5,6 +5,7 @@
using Azure.ResourceManager.Resources.Models;
using Calamari.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Extensions;
using Calamari.Common.Plumbing.Logging;
@@ -28,7 +29,7 @@ public async Task Execute(RunningDeployment context)
log.Verbose("Using Modern Azure SDK behaviour.");
var variables = context.Variables;
- var hasAccessToken = !variables.Get(AccountVariables.Jwt).IsNullOrEmpty();
+ var hasAccessToken = !variables.Get(AzureAccountVariables.Jwt).IsNullOrEmpty();
IAzureAccount account = hasAccessToken ? new AzureOidcAccount(variables) : new AzureServicePrincipalAccount(variables);
var armClient = account.CreateArmClient();
diff --git a/source/Calamari.AzureScripting/AzureContextScriptWrapper.cs b/source/Calamari.AzureScripting/AzureContextScriptWrapper.cs
index 14974f24dd..7ef571659e 100644
--- a/source/Calamari.AzureScripting/AzureContextScriptWrapper.cs
+++ b/source/Calamari.AzureScripting/AzureContextScriptWrapper.cs
@@ -4,12 +4,11 @@
using System.Linq;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
-using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Features.EmbeddedResources;
using Calamari.Common.Features.Processes;
using Calamari.Common.Features.Scripting;
using Calamari.Common.Features.Scripts;
-using Calamari.Common.FeatureToggles;
using Calamari.Common.Plumbing.FileSystem;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
@@ -76,7 +75,7 @@ public CommandResult ExecuteScript(Script script,
}
else
{
- variables.Set("OctopusOpenIdJwt", variables.Get(AccountVariables.Jwt));
+ variables.Set("OctopusOpenIdJwt", variables.Get(AzureAccountVariables.OpenIDJwt));
}
return NextWrapper!.ExecuteScript(new Script(contextScriptFile.FilePath), scriptSyntax, commandLineRunner, environmentVars);
diff --git a/source/Calamari.AzureScripting/Calamari.AzureScripting.csproj b/source/Calamari.AzureScripting/Calamari.AzureScripting.csproj
index 201deeeb6c..84b13a0f00 100644
--- a/source/Calamari.AzureScripting/Calamari.AzureScripting.csproj
+++ b/source/Calamari.AzureScripting/Calamari.AzureScripting.csproj
@@ -23,8 +23,8 @@
+
-
diff --git a/source/Calamari.AzureWebApp.Tests/DeployAzureWebCommandFixture.cs b/source/Calamari.AzureWebApp.Tests/DeployAzureWebCommandFixture.cs
index 661a4a8b61..85130295ef 100644
--- a/source/Calamari.AzureWebApp.Tests/DeployAzureWebCommandFixture.cs
+++ b/source/Calamari.AzureWebApp.Tests/DeployAzureWebCommandFixture.cs
@@ -13,6 +13,7 @@
using Calamari.Azure;
using Calamari.Azure.AppServices;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Features.Deployment;
using Calamari.Common.Features.Scripts;
using Calamari.Common.Plumbing.FileSystem;
@@ -49,8 +50,8 @@ public class DeployAzureWebCommandFixture
[OneTimeSetUp]
public async Task Setup()
{
- var resourceManagementEndpointBaseUri = Environment.GetEnvironmentVariable(AccountVariables.ResourceManagementEndPoint) ?? DefaultVariables.ResourceManagementEndpoint;
- var activeDirectoryEndpointBaseUri = Environment.GetEnvironmentVariable(AccountVariables.ActiveDirectoryEndPoint) ?? DefaultVariables.ActiveDirectoryEndpoint;
+ var resourceManagementEndpointBaseUri = Environment.GetEnvironmentVariable(AzureAccountVariables.ResourceManagementEndPoint) ?? DefaultVariables.ResourceManagementEndpoint;
+ var activeDirectoryEndpointBaseUri = Environment.GetEnvironmentVariable(AzureAccountVariables.ActiveDirectoryEndPoint) ?? DefaultVariables.ActiveDirectoryEndpoint;
var resourceGroupName = AzureTestResourceHelpers.GetResourceGroupName();
diff --git a/source/Calamari.AzureWebApp/AzureWebAppBehaviour.cs b/source/Calamari.AzureWebApp/AzureWebAppBehaviour.cs
index 5f18d72172..9c7382dd91 100644
--- a/source/Calamari.AzureWebApp/AzureWebAppBehaviour.cs
+++ b/source/Calamari.AzureWebApp/AzureWebAppBehaviour.cs
@@ -7,6 +7,7 @@
using Calamari.Azure.AppServices;
using Calamari.AzureWebApp.Integration.Websites.Publishing;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Pipeline;
diff --git a/source/Calamari.AzureWebApp/Calamari.AzureWebApp.csproj b/source/Calamari.AzureWebApp/Calamari.AzureWebApp.csproj
index f61dbea9e0..aa3368d633 100644
--- a/source/Calamari.AzureWebApp/Calamari.AzureWebApp.csproj
+++ b/source/Calamari.AzureWebApp/Calamari.AzureWebApp.csproj
@@ -23,7 +23,6 @@
-
diff --git a/source/Calamari.AzureWebApp/Integration/Websites/Publishing/ResourceManagerPublishProfileProvider.cs b/source/Calamari.AzureWebApp/Integration/Websites/Publishing/ResourceManagerPublishProfileProvider.cs
index 844804d824..5f5ad48c60 100644
--- a/source/Calamari.AzureWebApp/Integration/Websites/Publishing/ResourceManagerPublishProfileProvider.cs
+++ b/source/Calamari.AzureWebApp/Integration/Websites/Publishing/ResourceManagerPublishProfileProvider.cs
@@ -12,6 +12,7 @@
using Calamari.Azure;
using Calamari.Azure.AppServices;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
diff --git a/source/Calamari.AzureWebApp/LogAzureWebAppDetailsBehaviour.cs b/source/Calamari.AzureWebApp/LogAzureWebAppDetailsBehaviour.cs
index 06f69567f6..a907aba78f 100644
--- a/source/Calamari.AzureWebApp/LogAzureWebAppDetailsBehaviour.cs
+++ b/source/Calamari.AzureWebApp/LogAzureWebAppDetailsBehaviour.cs
@@ -6,6 +6,7 @@
using Calamari.Azure;
using Calamari.Azure.AppServices;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Pipeline;
diff --git a/source/Calamari.CloudAccounts.Aws/AwsAccountVariables.cs b/source/Calamari.CloudAccounts.Aws/AwsAccountVariables.cs
new file mode 100644
index 0000000000..2b7d9d3080
--- /dev/null
+++ b/source/Calamari.CloudAccounts.Aws/AwsAccountVariables.cs
@@ -0,0 +1,8 @@
+namespace Calamari.CloudAccounts.Aws;
+
+public static class AwsAccountVariables
+{
+ public static readonly string RoleArn = "RoleArn";
+ public static readonly string Region = "Region";
+ public static readonly string SessionDuration = "SessionDuration";
+}
\ No newline at end of file
diff --git a/source/Calamari.CloudAccounts/AwsAuthenticationProvider.cs b/source/Calamari.CloudAccounts.Aws/AwsAuthenticationProvider.cs
similarity index 91%
rename from source/Calamari.CloudAccounts/AwsAuthenticationProvider.cs
rename to source/Calamari.CloudAccounts.Aws/AwsAuthenticationProvider.cs
index c3e0c8d1e5..c54dd5f6a8 100644
--- a/source/Calamari.CloudAccounts/AwsAuthenticationProvider.cs
+++ b/source/Calamari.CloudAccounts.Aws/AwsAuthenticationProvider.cs
@@ -1,8 +1,6 @@
using System;
-using System.Linq;
using System.Security.Authentication;
using System.Text;
-using System.Threading.Tasks;
using Amazon;
using Amazon.ECR;
using Amazon.ECR.Model;
@@ -12,7 +10,7 @@
using Calamari.Common.Plumbing.Variables;
using Octopus.CoreUtilities.Extensions;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.Aws
{
public static class AwsAuthenticationProvider
{
@@ -22,9 +20,9 @@ public static class AwsAuthenticationProvider
try
{
var jwt = variables.Get(AuthenticationVariables.Jwt);
- var roleArn = variables.Get(AuthenticationVariables.Aws.RoleArn);
- var region = variables.Get(AuthenticationVariables.Aws.Region);
- var sessionDuration = variables.Get(AuthenticationVariables.Aws.SessionDuration);
+ var roleArn = variables.Get(AwsAccountVariables.RoleArn);
+ var region = variables.Get(AwsAccountVariables.Region);
+ var sessionDuration = variables.Get(AwsAccountVariables.SessionDuration);
var regionEndpoint = RegionEndpoint.GetBySystemName(region);
var client = new AmazonSecurityTokenServiceClient(new AnonymousAWSCredentials(), regionEndpoint);
@@ -53,7 +51,7 @@ public static class AwsAuthenticationProvider
public static async Task<(string Username, string Password, Uri RegistryUri)> GetEcrAccessKeyCredentials(IVariables variables, string accessKey, string secretKey)
{
- var region = variables.Get(AuthenticationVariables.Aws.Region);
+ var region = variables.Get(AwsAccountVariables.Region);
var regionEndpoint = RegionEndpoint.GetBySystemName(region);
AmazonECRClient client;
if (accessKey.IsNullOrEmpty() || secretKey.IsNullOrEmpty())
diff --git a/source/Calamari.CloudAccounts/AwsEnvironmentGeneration.cs b/source/Calamari.CloudAccounts.Aws/AwsEnvironmentGeneration.cs
similarity index 99%
rename from source/Calamari.CloudAccounts/AwsEnvironmentGeneration.cs
rename to source/Calamari.CloudAccounts.Aws/AwsEnvironmentGeneration.cs
index e2a688dfb5..b6caa235d2 100644
--- a/source/Calamari.CloudAccounts/AwsEnvironmentGeneration.cs
+++ b/source/Calamari.CloudAccounts.Aws/AwsEnvironmentGeneration.cs
@@ -1,7 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Net.Http;
-using System.Threading.Tasks;
using Amazon;
using Amazon.Runtime;
using Amazon.SecurityToken;
@@ -10,7 +7,7 @@
using Calamari.Common.Plumbing.Variables;
using Newtonsoft.Json;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.Aws
{
///
/// This service is used to generate the appropriate environment variables required to authentication
diff --git a/source/Calamari.CloudAccounts/Calamari.CloudAccounts.csproj b/source/Calamari.CloudAccounts.Aws/Calamari.CloudAccounts.Aws.csproj
similarity index 50%
rename from source/Calamari.CloudAccounts/Calamari.CloudAccounts.csproj
rename to source/Calamari.CloudAccounts.Aws/Calamari.CloudAccounts.Aws.csproj
index 535418a116..2b2b1fd079 100644
--- a/source/Calamari.CloudAccounts/Calamari.CloudAccounts.csproj
+++ b/source/Calamari.CloudAccounts.Aws/Calamari.CloudAccounts.Aws.csproj
@@ -1,10 +1,11 @@
- Calamari.CloudAccounts
+ Calamari.CloudAccounts.Aws
net8.0
- Octopus.Calamari.CloudAccounts
- Calamari.CloudAccounts
+ enable
+ Octopus.Calamari.CloudAccounts.Aws
+ Calamari.CloudAccounts.Aws
Octopus Deploy
Octopus Deploy Pty Ltd
https://github.com/OctopusDeploy/Calamari
@@ -14,15 +15,12 @@
-
+
-
-
-
-
-
+
+
+
-
diff --git a/source/Calamari.CloudAccounts.Aws/Properties/AssemblyInfo.cs b/source/Calamari.CloudAccounts.Aws/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..d6a3f16744
--- /dev/null
+++ b/source/Calamari.CloudAccounts.Aws/Properties/AssemblyInfo.cs
@@ -0,0 +1,3 @@
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("Calamari.Tests")]
\ No newline at end of file
diff --git a/source/Calamari.CloudAccounts/AuthHttpClientFactory.cs b/source/Calamari.CloudAccounts.Azure/AuthHttpClientFactory.cs
similarity index 92%
rename from source/Calamari.CloudAccounts/AuthHttpClientFactory.cs
rename to source/Calamari.CloudAccounts.Azure/AuthHttpClientFactory.cs
index 1a7eee4592..6c0f89675e 100644
--- a/source/Calamari.CloudAccounts/AuthHttpClientFactory.cs
+++ b/source/Calamari.CloudAccounts.Azure/AuthHttpClientFactory.cs
@@ -1,8 +1,8 @@
+using System;
using System.Net;
-using System.Net.Http;
using Microsoft.Identity.Client;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.Azure
{
public class AuthHttpClientFactory : IMsalHttpClientFactory
{
diff --git a/source/Calamari.CloudAccounts/AzureAccountFactory.cs b/source/Calamari.CloudAccounts.Azure/AzureAccountFactory.cs
similarity index 80%
rename from source/Calamari.CloudAccounts/AzureAccountFactory.cs
rename to source/Calamari.CloudAccounts.Azure/AzureAccountFactory.cs
index fad7c01286..39c2a89e99 100644
--- a/source/Calamari.CloudAccounts/AzureAccountFactory.cs
+++ b/source/Calamari.CloudAccounts.Azure/AzureAccountFactory.cs
@@ -1,6 +1,7 @@
-using Calamari.Common.Plumbing.Variables;
+using System;
+using Calamari.Common.Plumbing.Variables;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.Azure
{
public static class AzureAccountFactory
{
diff --git a/source/Calamari.CloudAccounts.Azure/AzureAccountVariables.cs b/source/Calamari.CloudAccounts.Azure/AzureAccountVariables.cs
new file mode 100644
index 0000000000..0dfc6871de
--- /dev/null
+++ b/source/Calamari.CloudAccounts.Azure/AzureAccountVariables.cs
@@ -0,0 +1,16 @@
+using System;
+
+namespace Calamari.CloudAccounts.Azure;
+
+public static class AzureAccountVariables
+{
+ public static readonly string Environment = "Octopus.Action.Azure.Environment";
+ public static readonly string AccountVariable = "Octopus.Action.AzureAccount.Variable";
+ public static readonly string SubscriptionId = "Octopus.Action.Azure.SubscriptionId";
+ public static readonly string ClientId = "Octopus.Action.Azure.ClientId";
+ public static readonly string TenantId = "Octopus.Action.Azure.TenantId";
+ public static readonly string Password = "Octopus.Action.Azure.Password";
+ public static readonly string OpenIDJwt = "Octopus.OpenIdConnect.Jwt";
+ public static readonly string ResourceManagementEndPoint = "Octopus.Action.Azure.ResourceManagementEndPoint";
+ public static readonly string ActiveDirectoryEndPoint = "Octopus.Action.Azure.ActiveDirectoryEndPoint";
+}
\ No newline at end of file
diff --git a/source/Calamari.CloudAccounts/AzureContainerRegistryAuthenticationProvider.cs b/source/Calamari.CloudAccounts.Azure/AzureContainerRegistryAuthenticationProvider.cs
similarity index 97%
rename from source/Calamari.CloudAccounts/AzureContainerRegistryAuthenticationProvider.cs
rename to source/Calamari.CloudAccounts.Azure/AzureContainerRegistryAuthenticationProvider.cs
index a9a482a562..4b25d17a28 100644
--- a/source/Calamari.CloudAccounts/AzureContainerRegistryAuthenticationProvider.cs
+++ b/source/Calamari.CloudAccounts.Azure/AzureContainerRegistryAuthenticationProvider.cs
@@ -1,14 +1,11 @@
using System;
-using System.Collections.Generic;
-using System.Net.Http;
-using System.Threading.Tasks;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NetWebRequest = System.Net.WebRequest;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.Azure
{
public class AzureContainerRegistryAuthenticationProvider
{
@@ -35,7 +32,7 @@ public AzureContainerRegistryAuthenticationProvider()
{
Log.Verbose("Starting ACR OIDC credential retrieval process");
var jwt = variables.Get(AuthenticationVariables.Jwt);
- var clientId = variables.Get(AuthenticationVariables.Azure.ClientId);
+ var clientId = variables.Get(AzureAccountVariables.ClientId);
var tenantId = variables.Get(AuthenticationVariables.Azure.TenantId);
var aadToken = await ExchangeJwtForAccessTokenAsync(jwt, clientId, tenantId);
var refreshToken = await GetAcrRefreshTokenAsync(registryUri, aadToken, tenantId);
diff --git a/source/Calamari.CloudAccounts/AzureOidcAccount.cs b/source/Calamari.CloudAccounts.Azure/AzureOidcAccount.cs
similarity index 74%
rename from source/Calamari.CloudAccounts/AzureOidcAccount.cs
rename to source/Calamari.CloudAccounts.Azure/AzureOidcAccount.cs
index 7ffc4a28f4..3371038bd2 100644
--- a/source/Calamari.CloudAccounts/AzureOidcAccount.cs
+++ b/source/Calamari.CloudAccounts.Azure/AzureOidcAccount.cs
@@ -1,7 +1,8 @@
+using System;
using Calamari.Common.Plumbing.Variables;
using Newtonsoft.Json;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.Azure
{
public class AzureOidcAccount : IAzureAccount
{
@@ -26,13 +27,13 @@ public AzureOidcAccount(
public AzureOidcAccount(IVariables variables)
{
- SubscriptionNumber = variables.Get(AccountVariables.SubscriptionId);
- ClientId = variables.Get(AccountVariables.ClientId);
- TenantId = variables.Get(AccountVariables.TenantId);
- Jwt = variables.Get(AccountVariables.Jwt);
- AzureEnvironment = variables.Get(AccountVariables.Environment);
- ResourceManagementEndpointBaseUri = variables.Get(AccountVariables.ResourceManagementEndPoint, DefaultVariables.ResourceManagementEndpoint);
- ActiveDirectoryEndpointBaseUri = variables.Get(AccountVariables.ActiveDirectoryEndPoint, DefaultVariables.OidcAuthContextUri);
+ SubscriptionNumber = variables.Get(AzureAccountVariables.SubscriptionId);
+ ClientId = variables.Get(AzureAccountVariables.ClientId);
+ TenantId = variables.Get(AzureAccountVariables.TenantId);
+ Jwt = variables.Get(AzureAccountVariables.OpenIDJwt);
+ AzureEnvironment = variables.Get(AzureAccountVariables.Environment);
+ ResourceManagementEndpointBaseUri = variables.Get(AzureAccountVariables.ResourceManagementEndPoint, DefaultVariables.ResourceManagementEndpoint);
+ ActiveDirectoryEndpointBaseUri = variables.Get(AzureAccountVariables.ActiveDirectoryEndPoint, DefaultVariables.OidcAuthContextUri);
}
public AccountType AccountType => AccountType.AzureOidc;
diff --git a/source/Calamari.CloudAccounts/AzureOidcAccountExtensions.cs b/source/Calamari.CloudAccounts.Azure/AzureOidcAccountExtensions.cs
similarity index 96%
rename from source/Calamari.CloudAccounts/AzureOidcAccountExtensions.cs
rename to source/Calamari.CloudAccounts.Azure/AzureOidcAccountExtensions.cs
index feec5fe71d..4967a06651 100644
--- a/source/Calamari.CloudAccounts/AzureOidcAccountExtensions.cs
+++ b/source/Calamari.CloudAccounts.Azure/AzureOidcAccountExtensions.cs
@@ -1,9 +1,8 @@
-using System.Threading;
-using System.Threading.Tasks;
+using System;
using Calamari.Common.Plumbing.Logging;
using Microsoft.Identity.Client;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.Azure
{
public static class AzureOidcAccountExtensions
{
diff --git a/source/Calamari.CloudAccounts/AzureServicePrincipalAccount.cs b/source/Calamari.CloudAccounts.Azure/AzureServicePrincipalAccount.cs
similarity index 66%
rename from source/Calamari.CloudAccounts/AzureServicePrincipalAccount.cs
rename to source/Calamari.CloudAccounts.Azure/AzureServicePrincipalAccount.cs
index 9860381519..232a8e3bcd 100644
--- a/source/Calamari.CloudAccounts/AzureServicePrincipalAccount.cs
+++ b/source/Calamari.CloudAccounts.Azure/AzureServicePrincipalAccount.cs
@@ -1,7 +1,8 @@
+using System;
using Calamari.Common.Plumbing.Variables;
using Newtonsoft.Json;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.Azure
{
public class AzureServicePrincipalAccount : IAzureAccount
{
@@ -26,13 +27,13 @@ public AzureServicePrincipalAccount(
public AzureServicePrincipalAccount(IVariables variables)
{
- SubscriptionNumber = variables.Get(AccountVariables.SubscriptionId);
- ClientId = variables.Get(AccountVariables.ClientId);
- TenantId = variables.Get(AccountVariables.TenantId);
- Password = variables.Get(AccountVariables.Password);
- AzureEnvironment = variables.Get(AccountVariables.Environment);
- ResourceManagementEndpointBaseUri = variables.Get(AccountVariables.ResourceManagementEndPoint, DefaultVariables.ResourceManagementEndpoint);
- ActiveDirectoryEndpointBaseUri = variables.Get(AccountVariables.ActiveDirectoryEndPoint, DefaultVariables.ActiveDirectoryEndpoint);
+ SubscriptionNumber = variables.Get(AzureAccountVariables.SubscriptionId);
+ ClientId = variables.Get(AzureAccountVariables.ClientId);
+ TenantId = variables.Get(AzureAccountVariables.TenantId);
+ Password = variables.Get(AzureAccountVariables.Password);
+ AzureEnvironment = variables.Get(AzureAccountVariables.Environment);
+ ResourceManagementEndpointBaseUri = variables.Get(AzureAccountVariables.ResourceManagementEndPoint, DefaultVariables.ResourceManagementEndpoint);
+ ActiveDirectoryEndpointBaseUri = variables.Get(AzureAccountVariables.ActiveDirectoryEndPoint, DefaultVariables.ActiveDirectoryEndpoint);
}
public AccountType AccountType => AccountType.AzureServicePrincipal;
diff --git a/source/Calamari.CloudAccounts/AzureServicePrincipalAccountExtensions.cs b/source/Calamari.CloudAccounts.Azure/AzureServicePrincipalAccountExtensions.cs
similarity index 97%
rename from source/Calamari.CloudAccounts/AzureServicePrincipalAccountExtensions.cs
rename to source/Calamari.CloudAccounts.Azure/AzureServicePrincipalAccountExtensions.cs
index 2de00d7d67..c00a9822b0 100644
--- a/source/Calamari.CloudAccounts/AzureServicePrincipalAccountExtensions.cs
+++ b/source/Calamari.CloudAccounts.Azure/AzureServicePrincipalAccountExtensions.cs
@@ -1,8 +1,8 @@
-using System.Threading.Tasks;
+using System;
using Calamari.Common.Plumbing.Logging;
using Microsoft.Identity.Client;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.Azure
{
public static class AzureServicePrincipalAccountExtensions
{
diff --git a/source/Calamari.CloudAccounts.Azure/Calamari.CloudAccounts.Azure.csproj b/source/Calamari.CloudAccounts.Azure/Calamari.CloudAccounts.Azure.csproj
new file mode 100644
index 0000000000..c12edca4e6
--- /dev/null
+++ b/source/Calamari.CloudAccounts.Azure/Calamari.CloudAccounts.Azure.csproj
@@ -0,0 +1,24 @@
+
+
+
+ Calamari.CloudAccounts.Azure
+ net8.0
+ enable
+ Octopus.Calamari.CloudAccounts.Azure
+ Calamari.CloudAccounts.Azure
+ Octopus Deploy
+ Octopus Deploy Pty Ltd
+ https://github.com/OctopusDeploy/Calamari
+ https://github.com/OctopusDeploy/Calamari/blob/main/LICENSE.txt
+ https://github.com/OctopusDeploy/Calamari
+ git
+
+
+
+
+
+
+
+
+
+
diff --git a/source/Calamari.CloudAccounts/DefaultVariables.cs b/source/Calamari.CloudAccounts.Azure/DefaultVariables.cs
similarity index 91%
rename from source/Calamari.CloudAccounts/DefaultVariables.cs
rename to source/Calamari.CloudAccounts.Azure/DefaultVariables.cs
index 70f631d27e..2c5b44faf4 100644
--- a/source/Calamari.CloudAccounts/DefaultVariables.cs
+++ b/source/Calamari.CloudAccounts.Azure/DefaultVariables.cs
@@ -1,6 +1,6 @@
using System;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.Azure
{
static class DefaultVariables
{
diff --git a/source/Calamari.CloudAccounts/IAzureAccount.cs b/source/Calamari.CloudAccounts.Azure/IAzureAccount.cs
similarity index 89%
rename from source/Calamari.CloudAccounts/IAzureAccount.cs
rename to source/Calamari.CloudAccounts.Azure/IAzureAccount.cs
index 558d9b1906..6d8cfcc14e 100644
--- a/source/Calamari.CloudAccounts/IAzureAccount.cs
+++ b/source/Calamari.CloudAccounts.Azure/IAzureAccount.cs
@@ -1,4 +1,6 @@
-namespace Calamari.CloudAccounts
+using System;
+
+namespace Calamari.CloudAccounts.Azure
{
public interface IAzureAccount
{
diff --git a/source/Calamari.CloudAccounts.GoogleCloud/Calamari.CloudAccounts.GoogleCloud.csproj b/source/Calamari.CloudAccounts.GoogleCloud/Calamari.CloudAccounts.GoogleCloud.csproj
new file mode 100644
index 0000000000..be6aaa0ce8
--- /dev/null
+++ b/source/Calamari.CloudAccounts.GoogleCloud/Calamari.CloudAccounts.GoogleCloud.csproj
@@ -0,0 +1,24 @@
+
+
+
+ Calamari.CloudAccounts.GoogleCloud
+ net8.0
+ enable
+ Octopus.Calamari.CloudAccounts.GoogleCloud
+ Calamari.CloudAccounts.GoogleCloud
+ Octopus Deploy
+ Octopus Deploy Pty Ltd
+ https://github.com/OctopusDeploy/Calamari
+ https://github.com/OctopusDeploy/Calamari/blob/main/LICENSE.txt
+ https://github.com/OctopusDeploy/Calamari
+ git
+
+
+
+
+
+
+
+
+
+
diff --git a/source/Calamari.GoogleCloudAccounts/GcloudOauthFilesConfiguration.cs b/source/Calamari.CloudAccounts.GoogleCloud/GcloudOauthFilesConfiguration.cs
similarity index 84%
rename from source/Calamari.GoogleCloudAccounts/GcloudOauthFilesConfiguration.cs
rename to source/Calamari.CloudAccounts.GoogleCloud/GcloudOauthFilesConfiguration.cs
index c45007b804..e84127c139 100644
--- a/source/Calamari.GoogleCloudAccounts/GcloudOauthFilesConfiguration.cs
+++ b/source/Calamari.CloudAccounts.GoogleCloud/GcloudOauthFilesConfiguration.cs
@@ -1,13 +1,7 @@
using System;
-using System.Collections.Generic;
-using System.IO;
-using Calamari.Common.Features.Processes;
-using Calamari.Common.Features.Scripting;
using Calamari.Common.Plumbing.FileSystem;
-using Calamari.Common.Plumbing.Logging;
-using Calamari.Common.Plumbing.Variables;
-namespace Calamari.GoogleCloudAccounts
+namespace Calamari.CloudAccounts.GoogleCloud
{
///
/// Gcloud oauth uses the jwt (as a file on disk) to create another creds config file.
diff --git a/source/Calamari.CloudAccounts.GoogleCloud/GoogleAccountVariables.cs b/source/Calamari.CloudAccounts.GoogleCloud/GoogleAccountVariables.cs
new file mode 100644
index 0000000000..78b0709315
--- /dev/null
+++ b/source/Calamari.CloudAccounts.GoogleCloud/GoogleAccountVariables.cs
@@ -0,0 +1,6 @@
+namespace Calamari.CloudAccounts.GoogleCloud;
+
+public static class GoogleAccountVariables
+{
+ public static readonly string Audience = "Audience";
+}
\ No newline at end of file
diff --git a/source/Calamari.CloudAccounts/GoogleAuthenticationProvider.cs b/source/Calamari.CloudAccounts.GoogleCloud/GoogleAuthenticationProvider.cs
similarity index 94%
rename from source/Calamari.CloudAccounts/GoogleAuthenticationProvider.cs
rename to source/Calamari.CloudAccounts.GoogleCloud/GoogleAuthenticationProvider.cs
index 4e7e5be4f9..6797d517c9 100644
--- a/source/Calamari.CloudAccounts/GoogleAuthenticationProvider.cs
+++ b/source/Calamari.CloudAccounts.GoogleCloud/GoogleAuthenticationProvider.cs
@@ -1,14 +1,10 @@
using System;
-using System.Collections.Generic;
-using System.Net.Http;
-using System.Threading;
-using System.Threading.Tasks;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
using Newtonsoft.Json;
using NetWebRequest = System.Net.WebRequest;
-namespace Calamari.CloudAccounts
+namespace Calamari.CloudAccounts.GoogleCloud
{
public class GoogleAuthenticationProvider
{
@@ -33,7 +29,7 @@ public GoogleAuthenticationProvider()
{
Log.Verbose("Starting GCR OIDC credential retrieval process");
var jwt = variables.Get(AuthenticationVariables.Jwt);
- var rawAudience = variables.Get(AuthenticationVariables.Google.Audience);
+ var rawAudience = variables.Get(GoogleAccountVariables.Audience);
var audience = Uri.TryCreate(rawAudience, UriKind.Absolute, out var uri)
? $"//{uri.Host}{uri.AbsolutePath}"
: rawAudience;
diff --git a/source/Calamari.GoogleCloudAccounts/GoogleCloudAccountExtensions.cs b/source/Calamari.CloudAccounts.GoogleCloud/GoogleCloudAccountExtensions.cs
similarity index 98%
rename from source/Calamari.GoogleCloudAccounts/GoogleCloudAccountExtensions.cs
rename to source/Calamari.CloudAccounts.GoogleCloud/GoogleCloudAccountExtensions.cs
index d56f64a418..dc9bde39ee 100644
--- a/source/Calamari.GoogleCloudAccounts/GoogleCloudAccountExtensions.cs
+++ b/source/Calamari.CloudAccounts.GoogleCloud/GoogleCloudAccountExtensions.cs
@@ -1,7 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
using Calamari.Common.Features.Processes;
using Calamari.Common.Features.Scripting;
using Calamari.Common.Plumbing;
@@ -11,7 +8,7 @@
using Calamari.Common.Plumbing.Proxies;
using Calamari.Common.Plumbing.Variables;
-namespace Calamari.GoogleCloudAccounts
+namespace Calamari.CloudAccounts.GoogleCloud
{
public class SetupGCloudAuthentication
{
@@ -22,7 +19,7 @@ public class SetupGCloudAuthentication
readonly string workingDirectory;
readonly string jwtFilePath;
readonly string jsonAuthFilePath;
- private string gcloud = String.Empty;
+ private string gcloud = string.Empty;
public SetupGCloudAuthentication(IVariables variables,
ILog log,
diff --git a/source/Calamari.CloudAccounts/AccountVariables.cs b/source/Calamari.CloudAccounts/AccountVariables.cs
deleted file mode 100644
index b4fc3b6d56..0000000000
--- a/source/Calamari.CloudAccounts/AccountVariables.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System;
-
-namespace Calamari.CloudAccounts
-{
- public static class AccountVariables
- {
- public static readonly string Environment = "Octopus.Action.Azure.Environment";
- public static readonly string SubscriptionId = "Octopus.Action.Azure.SubscriptionId";
- public static readonly string ClientId = "Octopus.Action.Azure.ClientId";
- public static readonly string TenantId = "Octopus.Action.Azure.TenantId";
- public static readonly string Password = "Octopus.Action.Azure.Password";
- public static readonly string Jwt = "Octopus.OpenIdConnect.Jwt";
- public static readonly string ResourceManagementEndPoint = "Octopus.Action.Azure.ResourceManagementEndPoint";
- public static readonly string ActiveDirectoryEndPoint = "Octopus.Action.Azure.ActiveDirectoryEndPoint";
- }
-}
diff --git a/source/Calamari.CloudAccounts/AzureAccountVariables.cs b/source/Calamari.CloudAccounts/AzureAccountVariables.cs
deleted file mode 100644
index df777095a3..0000000000
--- a/source/Calamari.CloudAccounts/AzureAccountVariables.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace Calamari.CloudAccounts
-{
- public static class AzureAccountVariables
- {
- public static readonly string Environment = "Octopus.Action.Azure.Environment";
- public static readonly string AccountVariable = "Octopus.Action.AzureAccount.Variable";
- public static readonly string SubscriptionId = "Octopus.Action.Azure.SubscriptionId";
- public static readonly string ClientId = "Octopus.Action.Azure.ClientId";
- public static readonly string TenantId = "Octopus.Action.Azure.TenantId";
- public static readonly string Password = "Octopus.Action.Azure.Password";
- public static readonly string OpenIDJwt = "Octopus.OpenIdConnect.Jwt";
- public static readonly string ResourceManagementEndPoint = "Octopus.Action.Azure.ResourceManagementEndPoint";
- public static readonly string ActiveDirectoryEndPoint = "Octopus.Action.Azure.ActiveDirectoryEndPoint";
- }
-}
\ No newline at end of file
diff --git a/source/Calamari.CloudAccounts/Properties/AssemblyInfo.cs b/source/Calamari.CloudAccounts/Properties/AssemblyInfo.cs
deleted file mode 100644
index 4347dbd3ad..0000000000
--- a/source/Calamari.CloudAccounts/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-using System.Runtime.CompilerServices;
-
-[assembly: InternalsVisibleTo("Calamari.Tests")]
diff --git a/source/Calamari.Common/Plumbing/Variables/AuthenticationVariables.cs b/source/Calamari.Common/Plumbing/Variables/AuthenticationVariables.cs
index f9781a9bd5..42066d4662 100644
--- a/source/Calamari.Common/Plumbing/Variables/AuthenticationVariables.cs
+++ b/source/Calamari.Common/Plumbing/Variables/AuthenticationVariables.cs
@@ -5,22 +5,10 @@ public static class AuthenticationVariables
public static readonly string FeedType = "FeedType";
public static readonly string Jwt = "Jwt";
- public static class Aws
- {
- public static readonly string RoleArn = "RoleArn";
- public static readonly string Region = "Region";
- public static readonly string SessionDuration = "SessionDuration";
- }
-
public static class Azure
{
public static readonly string TenantId = "TenantId";
public static readonly string ClientId = "ClientId";
}
-
- public static class Google
- {
- public static readonly string Audience = "Audience";
- }
}
}
\ No newline at end of file
diff --git a/source/Calamari.GoogleCloudAccounts/Calamari.GoogleCloudAccounts.csproj b/source/Calamari.GoogleCloudAccounts/Calamari.GoogleCloudAccounts.csproj
deleted file mode 100644
index 012535291a..0000000000
--- a/source/Calamari.GoogleCloudAccounts/Calamari.GoogleCloudAccounts.csproj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Calamari.GoogleCloudAccounts
- net8.0
-
- CS8632
- true
-
-
-
-
-
-
-
diff --git a/source/Calamari.GoogleCloudScripting/Calamari.GoogleCloudScripting.csproj b/source/Calamari.GoogleCloudScripting/Calamari.GoogleCloudScripting.csproj
index 2f3bf29646..3cec83c8e9 100644
--- a/source/Calamari.GoogleCloudScripting/Calamari.GoogleCloudScripting.csproj
+++ b/source/Calamari.GoogleCloudScripting/Calamari.GoogleCloudScripting.csproj
@@ -13,7 +13,7 @@
-
+
diff --git a/source/Calamari.GoogleCloudScripting/GoogleCloudContextScriptWrapper.cs b/source/Calamari.GoogleCloudScripting/GoogleCloudContextScriptWrapper.cs
index 90af717edd..ca063e961a 100644
--- a/source/Calamari.GoogleCloudScripting/GoogleCloudContextScriptWrapper.cs
+++ b/source/Calamari.GoogleCloudScripting/GoogleCloudContextScriptWrapper.cs
@@ -7,7 +7,7 @@
using Calamari.Common.Features.Scripts;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
-using Calamari.GoogleCloudAccounts;
+using Calamari.CloudAccounts.GoogleCloud;
namespace Calamari.GoogleCloudScripting
{
diff --git a/source/Calamari.Shared/Calamari.Shared.csproj b/source/Calamari.Shared/Calamari.Shared.csproj
index 99133382e3..2e8df8fd2c 100644
--- a/source/Calamari.Shared/Calamari.Shared.csproj
+++ b/source/Calamari.Shared/Calamari.Shared.csproj
@@ -26,7 +26,6 @@
-
diff --git a/source/Calamari.Shared/Integration/Certificates/FileSystem/PackageStore.cs b/source/Calamari.Shared/Integration/Certificates/FileSystem/PackageStore.cs
index 7c20699540..c24ce66787 100644
--- a/source/Calamari.Shared/Integration/Certificates/FileSystem/PackageStore.cs
+++ b/source/Calamari.Shared/Integration/Certificates/FileSystem/PackageStore.cs
@@ -6,7 +6,6 @@
using Calamari.Common.Features.Packages.Java;
using Calamari.Common.Plumbing.FileSystem;
using Calamari.Common.Plumbing.Logging;
-using Calamari.Integration.Packages;
using Octopus.Versioning;
namespace Calamari.Integration.FileSystem
diff --git a/source/Calamari.Terraform.Tests/CommandsFixture.cs b/source/Calamari.Terraform.Tests/CommandsFixture.cs
index a5b885c051..6b3a830e50 100644
--- a/source/Calamari.Terraform.Tests/CommandsFixture.cs
+++ b/source/Calamari.Terraform.Tests/CommandsFixture.cs
@@ -10,6 +10,7 @@
using System.Threading;
using System.Threading.Tasks;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Features.Processes;
using Calamari.Common.Plumbing;
using Calamari.Common.Plumbing.FileSystem;
diff --git a/source/Calamari.Terraform/Behaviours/TerraformDeployBehaviour.cs b/source/Calamari.Terraform/Behaviours/TerraformDeployBehaviour.cs
index 5e6dd578c2..c151d22368 100644
--- a/source/Calamari.Terraform/Behaviours/TerraformDeployBehaviour.cs
+++ b/source/Calamari.Terraform/Behaviours/TerraformDeployBehaviour.cs
@@ -3,14 +3,15 @@
using System.IO;
using System.Text;
using System.Threading.Tasks;
-using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Commands;
using Calamari.Common.Features.Processes;
using Calamari.Common.Plumbing.Extensions;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Pipeline;
using Calamari.Common.Plumbing.Variables;
-using Calamari.GoogleCloudAccounts;
+using Calamari.CloudAccounts.GoogleCloud;
using Newtonsoft.Json;
namespace Calamari.Terraform.Behaviours
diff --git a/source/Calamari.Terraform/Calamari.Terraform.csproj b/source/Calamari.Terraform/Calamari.Terraform.csproj
index f06bb292ec..0ef61d2a6f 100644
--- a/source/Calamari.Terraform/Calamari.Terraform.csproj
+++ b/source/Calamari.Terraform/Calamari.Terraform.csproj
@@ -11,11 +11,11 @@
-
-
-
+
+
+
diff --git a/source/Calamari.Tests/AWS/AwsAuthenticationProviderFixture.cs b/source/Calamari.Tests/AWS/AwsAuthenticationProviderFixture.cs
index b12dcbe1a1..cdc8dfc190 100644
--- a/source/Calamari.Tests/AWS/AwsAuthenticationProviderFixture.cs
+++ b/source/Calamari.Tests/AWS/AwsAuthenticationProviderFixture.cs
@@ -4,6 +4,7 @@
using System.Threading.Tasks;
using Amazon;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Plumbing.Variables;
using Calamari.Testing;
using Calamari.Testing.Helpers;
@@ -24,7 +25,7 @@ public class AwsAuthenticationProviderFixture
public void SetUp()
{
variables = new CalamariVariables();
- variables.Add(AuthenticationVariables.Aws.Region, RegionEndpoint.USWest2.SystemName);
+ variables.Add(AwsAccountVariables.Region, RegionEndpoint.USWest2.SystemName);
}
[Test]
diff --git a/source/Calamari.Tests/AWS/AwsEnvironmentGenerationFixture.cs b/source/Calamari.Tests/AWS/AwsEnvironmentGenerationFixture.cs
index a94a552005..b11d921f0f 100644
--- a/source/Calamari.Tests/AWS/AwsEnvironmentGenerationFixture.cs
+++ b/source/Calamari.Tests/AWS/AwsEnvironmentGenerationFixture.cs
@@ -3,6 +3,7 @@
using System.IO;
using System.Threading.Tasks;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Plumbing.FileSystem;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
diff --git a/source/Calamari.Tests/AWS/Ecs/SetEcsOutputVariablesConventionTests.cs b/source/Calamari.Tests/AWS/Ecs/SetEcsOutputVariablesConventionTests.cs
index c900336b61..bb6b478679 100644
--- a/source/Calamari.Tests/AWS/Ecs/SetEcsOutputVariablesConventionTests.cs
+++ b/source/Calamari.Tests/AWS/Ecs/SetEcsOutputVariablesConventionTests.cs
@@ -1,6 +1,7 @@
using System.Threading.Tasks;
using Calamari.Aws.Deployment.Conventions;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Variables;
using Calamari.Testing.Helpers;
diff --git a/source/Calamari.Tests/Azure/AzureClientFixture.cs b/source/Calamari.Tests/Azure/AzureClientFixture.cs
index e5a37a7802..f2e186ea17 100644
--- a/source/Calamari.Tests/Azure/AzureClientFixture.cs
+++ b/source/Calamari.Tests/Azure/AzureClientFixture.cs
@@ -1,6 +1,7 @@
using System;
using Calamari.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using NUnit.Framework;
namespace Calamari.Tests.Azure
diff --git a/source/Calamari.Tests/KubernetesFixtures/KubernetesContextScriptWrapperLiveFixtureAks.cs b/source/Calamari.Tests/KubernetesFixtures/KubernetesContextScriptWrapperLiveFixtureAks.cs
index a6e8c625da..9f365e2249 100644
--- a/source/Calamari.Tests/KubernetesFixtures/KubernetesContextScriptWrapperLiveFixtureAks.cs
+++ b/source/Calamari.Tests/KubernetesFixtures/KubernetesContextScriptWrapperLiveFixtureAks.cs
@@ -5,6 +5,7 @@
using System.Threading.Tasks;
using Calamari.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Features.Discovery;
using Calamari.Common.Plumbing.FileSystem;
using Calamari.Common.Plumbing.ServiceMessages;
diff --git a/source/Calamari.Tests/KubernetesFixtures/KubernetesContextScriptWrapperLiveFixtureAksLocalAccessDisabled.cs b/source/Calamari.Tests/KubernetesFixtures/KubernetesContextScriptWrapperLiveFixtureAksLocalAccessDisabled.cs
index dd69ce5186..42ff9b1d69 100644
--- a/source/Calamari.Tests/KubernetesFixtures/KubernetesContextScriptWrapperLiveFixtureAksLocalAccessDisabled.cs
+++ b/source/Calamari.Tests/KubernetesFixtures/KubernetesContextScriptWrapperLiveFixtureAksLocalAccessDisabled.cs
@@ -4,6 +4,7 @@
using System.Threading.Tasks;
using Calamari.Azure;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Features.Discovery;
using Calamari.Common.Plumbing.ServiceMessages;
using Calamari.Deployment;
diff --git a/source/Calamari.sln b/source/Calamari.sln
index c776abd646..f87eda6b33 100644
--- a/source/Calamari.sln
+++ b/source/Calamari.sln
@@ -26,8 +26,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build files", "Build files"
..\ForbiddenWords.txt = ..\ForbiddenWords.txt
EndProjectSection
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Calamari.CloudAccounts", "Calamari.CloudAccounts\Calamari.CloudAccounts.csproj", "{58955C6D-3FC6-413F-B532-F37FF70EB818}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Calamari.Common", "Calamari.Common\Calamari.Common.csproj", "{0CE6EDAC-DEEE-4EA1-A573-E660811445E6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Calamari.Testing", "Calamari.Testing\Calamari.Testing.csproj", "{95A4DBA0-EA92-4FD5-A92E-4DFDB4FC4493}"
@@ -78,8 +76,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calamari.Scripting", "Calam
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calamari.Scripting.Tests", "Calamari.Scripting.Tests\Calamari.Scripting.Tests.csproj", "{D8DEC40C-948F-4806-AE87-1A7502E41A06}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calamari.GoogleCloudAccounts", "Calamari.GoogleCloudAccounts\Calamari.GoogleCloudAccounts.csproj", "{74F2739F-A501-4F30-BF9E-75A087C3B917}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calamari.ConsolidateCalamariPackages.Api", "Calamari.ConsolidateCalamariPackages.Api\Calamari.ConsolidateCalamariPackages.Api.csproj", "{A3BFFA0E-7514-41DE-A141-E124133D0665}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calamari.AzureWebApp.NetCoreShim", "Calamari.AzureWebApp.NetCoreShim\Calamari.AzureWebApp.NetCoreShim.csproj", "{B4EB8110-50D8-4C7E-8DBF-102AE57FD943}"
@@ -88,6 +84,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calamari.Contracts", "Calam
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calamari.DockerCredentialHelper", "Calamari.DockerCredentialHelper\Calamari.DockerCredentialHelper.csproj", "{B34DBEEC-7AC2-4BFE-ACDD-1788828925BD}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calamari.CloudAccounts.Aws", "Calamari.CloudAccounts.Aws\Calamari.CloudAccounts.Aws.csproj", "{A0E4AC5D-9D5D-4AA1-BD57-4F7F4E0DF835}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calamari.CloudAccounts.Azure", "Calamari.CloudAccounts.Azure\Calamari.CloudAccounts.Azure.csproj", "{277F0CD8-1404-422F-A246-669738B33E40}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calamari.CloudAccounts.GoogleCloud", "Calamari.CloudAccounts.GoogleCloud\Calamari.CloudAccounts.GoogleCloud.csproj", "{07F06752-E901-4CE1-9207-830179DB4AF5}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -110,10 +112,6 @@ Global
{6EDA4097-1A3E-4B1A-85BF-920DEA9ED8AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6EDA4097-1A3E-4B1A-85BF-920DEA9ED8AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6EDA4097-1A3E-4B1A-85BF-920DEA9ED8AD}.Release|Any CPU.Build.0 = Release|Any CPU
- {58955C6D-3FC6-413F-B532-F37FF70EB818}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {58955C6D-3FC6-413F-B532-F37FF70EB818}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {58955C6D-3FC6-413F-B532-F37FF70EB818}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {58955C6D-3FC6-413F-B532-F37FF70EB818}.Release|Any CPU.Build.0 = Release|Any CPU
{0CE6EDAC-DEEE-4EA1-A573-E660811445E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0CE6EDAC-DEEE-4EA1-A573-E660811445E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0CE6EDAC-DEEE-4EA1-A573-E660811445E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -212,10 +210,6 @@ Global
{D8DEC40C-948F-4806-AE87-1A7502E41A06}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D8DEC40C-948F-4806-AE87-1A7502E41A06}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D8DEC40C-948F-4806-AE87-1A7502E41A06}.Release|Any CPU.Build.0 = Release|Any CPU
- {74F2739F-A501-4F30-BF9E-75A087C3B917}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {74F2739F-A501-4F30-BF9E-75A087C3B917}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {74F2739F-A501-4F30-BF9E-75A087C3B917}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {74F2739F-A501-4F30-BF9E-75A087C3B917}.Release|Any CPU.Build.0 = Release|Any CPU
{A3BFFA0E-7514-41DE-A141-E124133D0665}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A3BFFA0E-7514-41DE-A141-E124133D0665}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A3BFFA0E-7514-41DE-A141-E124133D0665}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -232,6 +226,18 @@ Global
{B34DBEEC-7AC2-4BFE-ACDD-1788828925BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B34DBEEC-7AC2-4BFE-ACDD-1788828925BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B34DBEEC-7AC2-4BFE-ACDD-1788828925BD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A0E4AC5D-9D5D-4AA1-BD57-4F7F4E0DF835}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A0E4AC5D-9D5D-4AA1-BD57-4F7F4E0DF835}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A0E4AC5D-9D5D-4AA1-BD57-4F7F4E0DF835}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A0E4AC5D-9D5D-4AA1-BD57-4F7F4E0DF835}.Release|Any CPU.Build.0 = Release|Any CPU
+ {277F0CD8-1404-422F-A246-669738B33E40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {277F0CD8-1404-422F-A246-669738B33E40}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {277F0CD8-1404-422F-A246-669738B33E40}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {277F0CD8-1404-422F-A246-669738B33E40}.Release|Any CPU.Build.0 = Release|Any CPU
+ {07F06752-E901-4CE1-9207-830179DB4AF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {07F06752-E901-4CE1-9207-830179DB4AF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {07F06752-E901-4CE1-9207-830179DB4AF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {07F06752-E901-4CE1-9207-830179DB4AF5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/source/Calamari/Calamari.csproj b/source/Calamari/Calamari.csproj
index 7138f51c8c..7fda3118ab 100644
--- a/source/Calamari/Calamari.csproj
+++ b/source/Calamari/Calamari.csproj
@@ -28,6 +28,7 @@
+
@@ -54,6 +55,10 @@
+
+
+
+
diff --git a/source/Calamari.Shared/Integration/Packages/Download/AcrFeedLoginDetailsProvider.cs b/source/Calamari/Integration/Packages/Download/AcrFeedLoginDetailsProvider.cs
similarity index 96%
rename from source/Calamari.Shared/Integration/Packages/Download/AcrFeedLoginDetailsProvider.cs
rename to source/Calamari/Integration/Packages/Download/AcrFeedLoginDetailsProvider.cs
index 6ddcd5bc47..be2cfdf1be 100644
--- a/source/Calamari.Shared/Integration/Packages/Download/AcrFeedLoginDetailsProvider.cs
+++ b/source/Calamari/Integration/Packages/Download/AcrFeedLoginDetailsProvider.cs
@@ -1,6 +1,7 @@
using System;
using System.Threading.Tasks;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Azure;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
diff --git a/source/Calamari.Shared/Integration/Packages/Download/ArtifactoryPackageDownloader.cs b/source/Calamari/Integration/Packages/Download/ArtifactoryPackageDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/ArtifactoryPackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/ArtifactoryPackageDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/DockerCredentialHelper.cs b/source/Calamari/Integration/Packages/Download/DockerCredentialHelper.cs
similarity index 98%
rename from source/Calamari.Shared/Integration/Packages/Download/DockerCredentialHelper.cs
rename to source/Calamari/Integration/Packages/Download/DockerCredentialHelper.cs
index 4265313079..2a7a8a70ea 100644
--- a/source/Calamari.Shared/Integration/Packages/Download/DockerCredentialHelper.cs
+++ b/source/Calamari/Integration/Packages/Download/DockerCredentialHelper.cs
@@ -134,7 +134,7 @@ static void RemoveDirectoryFromPath(Dictionary environmentVariab
static void EnsureCredentialHelperIsExecutable()
{
- if (CalamariEnvironment.IsRunningOnWindows)
+ if (CalamariEnvironment.IsRunningOnWindows || OperatingSystem.IsWindows())
return;
var helperPath = Path.Combine(AppContext.BaseDirectory, "docker-credential-octopus");
diff --git a/source/Calamari.Shared/Integration/Packages/Download/DockerImagePackageDownloader.cs b/source/Calamari/Integration/Packages/Download/DockerImagePackageDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/DockerImagePackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/DockerImagePackageDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/EcrFeedLoginDetailsProvider.cs b/source/Calamari/Integration/Packages/Download/EcrFeedLoginDetailsProvider.cs
similarity index 97%
rename from source/Calamari.Shared/Integration/Packages/Download/EcrFeedLoginDetailsProvider.cs
rename to source/Calamari/Integration/Packages/Download/EcrFeedLoginDetailsProvider.cs
index 1f4aa8718c..08acb61fce 100644
--- a/source/Calamari.Shared/Integration/Packages/Download/EcrFeedLoginDetailsProvider.cs
+++ b/source/Calamari/Integration/Packages/Download/EcrFeedLoginDetailsProvider.cs
@@ -1,6 +1,6 @@
using System;
using System.Threading.Tasks;
-using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
@@ -28,6 +28,4 @@ public class EcrFeedLoginDetailsProvider : IFeedLoginDetailsProvider
return await AwsAuthenticationProvider.GetEcrAccessKeyCredentials(variables, username ?? string.Empty, password ?? string.Empty);
}
}
-
-
}
\ No newline at end of file
diff --git a/source/Calamari.Shared/Integration/Packages/Download/GcrFeedLoginDetailsProvider.cs b/source/Calamari/Integration/Packages/Download/GcrFeedLoginDetailsProvider.cs
similarity index 86%
rename from source/Calamari.Shared/Integration/Packages/Download/GcrFeedLoginDetailsProvider.cs
rename to source/Calamari/Integration/Packages/Download/GcrFeedLoginDetailsProvider.cs
index a2bea92ff3..4225e8153e 100644
--- a/source/Calamari.Shared/Integration/Packages/Download/GcrFeedLoginDetailsProvider.cs
+++ b/source/Calamari/Integration/Packages/Download/GcrFeedLoginDetailsProvider.cs
@@ -1,6 +1,6 @@
using System;
using System.Threading.Tasks;
-using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.GoogleCloud;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;
@@ -18,7 +18,7 @@ public class GcrFeedLoginDetailsProvider : IFeedLoginDetailsProvider
}
Log.Verbose("Gcr Feed - Using json key authentication flow.");
- return await Task.FromResult(gcrAuth.GetGcrUserNamePasswordCredentials(username, password, feedUri));
+ return gcrAuth.GetGcrUserNamePasswordCredentials(username, password, feedUri);
}
}
}
\ No newline at end of file
diff --git a/source/Calamari.Shared/Integration/Packages/Download/GcsStoragePackageDownloader.cs b/source/Calamari/Integration/Packages/Download/GcsStoragePackageDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/GcsStoragePackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/GcsStoragePackageDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/GitHubPackageDownloader.cs b/source/Calamari/Integration/Packages/Download/GitHubPackageDownloader.cs
similarity index 98%
rename from source/Calamari.Shared/Integration/Packages/Download/GitHubPackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/GitHubPackageDownloader.cs
index 0a07e9089a..a146360b52 100644
--- a/source/Calamari.Shared/Integration/Packages/Download/GitHubPackageDownloader.cs
+++ b/source/Calamari/Integration/Packages/Download/GitHubPackageDownloader.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Net;
using System.Net.Cache;
+using System.Net.Http;
using System.Threading;
using Calamari.Common.Commands;
using Calamari.Common.Features.Packages;
@@ -127,7 +128,7 @@ PackagePhysicalFileMetadata DownloadPackage(
JArray? req = null;
while (req == null || req.Count != 0 && req.Count < 1000)
{
- var uri = feedUri.AbsoluteUri + $"repos/{Uri.EscapeUriString(owner)}/{Uri.EscapeUriString(repository)}/tags?page={++page}&per_page=1000";
+ var uri = feedUri.AbsoluteUri + $"repos/{Uri.EscapeDataString(owner)}/{Uri.EscapeDataString(repository)}/tags?page={++page}&per_page=1000";
req = PerformRequest(authorizationToken, uri) as JArray;
if (req == null)
break;
@@ -179,8 +180,10 @@ PackagePhysicalFileMetadata DownloadFile(string uri,
try
{
if (retry != 0) Log.Verbose($"Download Attempt #{retry + 1}");
-
+
+#pragma warning disable SYSLIB0014
using (var client = new WebClient())
+#pragma warning restore SYSLIB0014
{
client.CachePolicy = new RequestCachePolicy(RequestCacheLevel.CacheIfAvailable);
client.Headers.Set(HttpRequestHeader.UserAgent, GetUserAgent());
@@ -205,7 +208,9 @@ JToken PerformRequest(string? authorizationToken, string uri)
{
try
{
+#pragma warning disable SYSLIB0014
using (var client = new WebClient())
+#pragma warning restore SYSLIB0014
{
client.CachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache);
client.Headers.Set(HttpRequestHeader.UserAgent, GetUserAgent());
diff --git a/source/Calamari.Shared/Integration/Packages/Download/Helm/HelmEndpointProxy.cs b/source/Calamari/Integration/Packages/Download/Helm/HelmEndpointProxy.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/Helm/HelmEndpointProxy.cs
rename to source/Calamari/Integration/Packages/Download/Helm/HelmEndpointProxy.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/Helm/HelmIndexYamlReader.cs b/source/Calamari/Integration/Packages/Download/Helm/HelmIndexYamlReader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/Helm/HelmIndexYamlReader.cs
rename to source/Calamari/Integration/Packages/Download/Helm/HelmIndexYamlReader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/HelmChartPackageDownloader.cs b/source/Calamari/Integration/Packages/Download/HelmChartPackageDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/HelmChartPackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/HelmChartPackageDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/IFeedLoginDetailsProviderFactory.cs b/source/Calamari/Integration/Packages/Download/IFeedLoginDetailsProviderFactory.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/IFeedLoginDetailsProviderFactory.cs
rename to source/Calamari/Integration/Packages/Download/IFeedLoginDetailsProviderFactory.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/IPackageDownloader.cs b/source/Calamari/Integration/Packages/Download/IPackageDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/IPackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/IPackageDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/IPackageDownloaderUtils.cs b/source/Calamari/Integration/Packages/Download/IPackageDownloaderUtils.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/IPackageDownloaderUtils.cs
rename to source/Calamari/Integration/Packages/Download/IPackageDownloaderUtils.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/MavenDownloadException.cs b/source/Calamari/Integration/Packages/Download/MavenDownloadException.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/MavenDownloadException.cs
rename to source/Calamari/Integration/Packages/Download/MavenDownloadException.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/MavenPackageDownloader.cs b/source/Calamari/Integration/Packages/Download/MavenPackageDownloader.cs
similarity index 68%
rename from source/Calamari.Shared/Integration/Packages/Download/MavenPackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/MavenPackageDownloader.cs
index 3ae7d5cf26..38ed9c0299 100644
--- a/source/Calamari.Shared/Integration/Packages/Download/MavenPackageDownloader.cs
+++ b/source/Calamari/Integration/Packages/Download/MavenPackageDownloader.cs
@@ -3,6 +3,7 @@
using System.IO;
using System.Linq;
using System.Net;
+using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading;
using System.Xml;
@@ -176,27 +177,37 @@ PackagePhysicalFileMetadata DownloadArtifact(
Guard.NotNull(feedUri, "feedUri can not be null");
var localDownloadName = Path.Combine(cacheDirectory, PackageName.ToCachedFileName(packageId, version, "." + mavenGavFirst.Packaging));
- var downloadUrl = feedUri.ToString().TrimEnd('/') +
- (snapshotMetadata == null
- ? mavenGavFirst.DefaultArtifactPath
- : mavenGavFirst.SnapshotArtifactPath(GetLatestSnapshotRelease(
- snapshotMetadata,
- mavenGavFirst.Packaging,
- mavenGavFirst.Classifier,
- mavenGavFirst.Version)));
+ var downloadUrl = feedUri.ToString().TrimEnd('/')
+ + (snapshotMetadata == null
+ ? mavenGavFirst.DefaultArtifactPath
+ : mavenGavFirst.SnapshotArtifactPath(GetLatestSnapshotRelease(
+ snapshotMetadata,
+ mavenGavFirst.Packaging,
+ mavenGavFirst.Classifier,
+ mavenGavFirst.Version)));
for (var retry = 0; retry < maxDownloadAttempts; ++retry)
try
{
Log.Verbose($"Downloading Attempt {downloadUrl} TO {localDownloadName}");
- using (var client = new WebClient
- { Credentials = feedCredentials })
+
+ var handler = new HttpClientHandler
+ {
+ Credentials = feedCredentials
+ };
+ var httpClient = new HttpClient(handler);
+
+ var response = httpClient.Send(new HttpRequestMessage(HttpMethod.Get, downloadUrl));
+ response.EnsureSuccessStatusCode();
+
+ using (var fs = new FileStream(localDownloadName, FileMode.CreateNew))
{
- client.DownloadFile(downloadUrl, localDownloadName);
- var packagePhysicalFileMetadata = PackagePhysicalFileMetadata.Build(localDownloadName);
- return packagePhysicalFileMetadata
- ?? throw new CommandException($"Unable to retrieve metadata for package {packageId}, version {version}");
+ response.Content.CopyTo(fs, null, CancellationToken.None);
}
+
+ var packagePhysicalFileMetadata = PackagePhysicalFileMetadata.Build(localDownloadName);
+ return packagePhysicalFileMetadata
+ ?? throw new CommandException($"Unable to retrieve metadata for package {packageId}, version {version}");
}
catch (Exception ex)
{
@@ -224,25 +235,25 @@ MavenPackageID FirstToRespond(
var errors = new ConcurrentBag();
var fileChecks = JarPackageExtractor.SupportedExtensions
- .Union(AdditionalExtensions)
- // Either consider all supported extensions, or select only the specified extension
- .Where(e => string.IsNullOrEmpty(mavenPackageId.Packaging) || e == "." + mavenPackageId.Packaging)
- .Select(extension =>
- {
- var packageId = new MavenPackageID(
- mavenPackageId.Group,
- mavenPackageId.Artifact,
- mavenPackageId.Version,
- Regex.Replace(extension, "^\\.", ""),
- mavenPackageId.Classifier);
- var result = MavenPackageExists(packageId, feedUri, feedCredentials, snapshotMetadata);
- errors.Add(result.ErrorMsg);
- return new
- {
- result.Found,
- MavenPackageId = packageId
- };
- });
+ .Union(AdditionalExtensions)
+ // Either consider all supported extensions, or select only the specified extension
+ .Where(e => string.IsNullOrEmpty(mavenPackageId.Packaging) || e == "." + mavenPackageId.Packaging)
+ .Select(extension =>
+ {
+ var packageId = new MavenPackageID(
+ mavenPackageId.Group,
+ mavenPackageId.Artifact,
+ mavenPackageId.Version,
+ Regex.Replace(extension, "^\\.", ""),
+ mavenPackageId.Classifier);
+ var result = MavenPackageExists(packageId, feedUri, feedCredentials, snapshotMetadata);
+ errors.Add(result.ErrorMsg);
+ return new
+ {
+ result.Found,
+ MavenPackageId = packageId
+ };
+ });
var firstFound = fileChecks.FirstOrDefault(res => res.Found);
if (firstFound != null)
@@ -258,25 +269,24 @@ MavenPackageID FirstToRespond(
/// true if the package exists, and false otherwise
(bool Found, string ErrorMsg) MavenPackageExists(MavenPackageID mavenGavParser, Uri feedUri, ICredentials feedCredentials, XmlDocument? snapshotMetadata)
{
- var uri = feedUri.ToString().TrimEnd('/') +
- (snapshotMetadata == null
- ? mavenGavParser.DefaultArtifactPath
- : mavenGavParser.SnapshotArtifactPath(
- GetLatestSnapshotRelease(
- snapshotMetadata,
- mavenGavParser.Packaging,
- mavenGavParser.Classifier,
- mavenGavParser.Version)));
+ var uri = feedUri.ToString().TrimEnd('/')
+ + (snapshotMetadata == null
+ ? mavenGavParser.DefaultArtifactPath
+ : mavenGavParser.SnapshotArtifactPath(
+ GetLatestSnapshotRelease(
+ snapshotMetadata,
+ mavenGavParser.Packaging,
+ mavenGavParser.Classifier,
+ mavenGavParser.Version)));
try
{
- var req = WebRequest.Create(uri);
- req.Method = "HEAD";
- req.Credentials = feedCredentials;
- using (var response = (HttpWebResponse)req.GetResponse())
- {
- return ((int)response.StatusCode >= 200 && (int)response.StatusCode <= 299, $"Unexpected Response: {response.StatusCode}");
- }
+ var httpClient = new HttpClient();
+ var request = new HttpRequestMessage(HttpMethod.Head, uri);
+
+ var response = httpClient.Send(request);
+
+ return (response.IsSuccessStatusCode, $"Unexpected Response: {response.StatusCode}");
}
catch (Exception ex)
{
@@ -300,23 +310,26 @@ MavenPackageID FirstToRespond(
for (var retry = 0; retry < maxDownloadAttempts; ++retry)
try
{
- var request = WebRequest.Create(url);
- request.Credentials = feedCredentials;
- using (var response = (HttpWebResponse)request.GetResponse())
+ var handler = new HttpClientHandler
{
- if (response.IsSuccessStatusCode() || (int)response.StatusCode == 404)
- using (var respStream = response.GetResponseStream())
- {
- var xmlDoc = new XmlDocument();
- xmlDoc.Load(respStream);
- return xmlDoc;
- }
+ Credentials = feedCredentials
+ };
+ var httpClient = new HttpClient(handler);
+ var response = httpClient.Send(new HttpRequestMessage(HttpMethod.Get, url));
+
+ if (response.IsSuccessStatusCode || response.StatusCode == HttpStatusCode.NotFound)
+ {
+ using (var contentStream = response.Content.ReadAsStream())
+ {
+ var xmlDoc = new XmlDocument();
+ xmlDoc.Load(contentStream);
+ return xmlDoc;
+ }
}
return null;
}
- catch (WebException ex) when (ex.Response is HttpWebResponse response &&
- response.StatusCode == HttpStatusCode.NotFound)
+ catch (WebException ex) when (ex.Response is HttpWebResponse response && response.StatusCode == HttpStatusCode.NotFound)
{
return null;
}
@@ -334,19 +347,19 @@ MavenPackageID FirstToRespond(
public string GetLatestSnapshotRelease(XmlDocument? snapshotMetadata, string? extension, string? classifier, string defaultVersion)
{
return snapshotMetadata?.ToEnumerable()
- .Select(doc => doc.DocumentElement?.SelectSingleNode("./*[local-name()='versioning']"))
- .Select(node => node?.SelectNodes("./*[local-name()='snapshotVersions']/*[local-name()='snapshotVersion']"))
- .Where(nodes => nodes != null)
- .SelectMany(nodes => nodes.Cast())
- .Where(node => (node.SelectSingleNode("./*[local-name()='extension']")?.InnerText.Trim() ?? "").Equals(extension?.Trim(), StringComparison.OrdinalIgnoreCase))
- // Classifier is optional, and the XML element does not exists if the artifact has no classifier
- .Where(node => classifier == null || (node.SelectSingleNode("./*[local-name()='classifier']")?.InnerText.Trim() ?? "").Equals(classifier.Trim(), StringComparison.OrdinalIgnoreCase))
- .OrderByDescending(node => node.SelectSingleNode("./*[local-name()='updated']")?.InnerText)
- .Select(node => node.SelectSingleNode("./*[local-name()='value']")?.InnerText)
- .FirstOrDefault() ??
- defaultVersion;
+ .Select(doc => doc.DocumentElement?.SelectSingleNode("./*[local-name()='versioning']"))
+ .Select(node => node?.SelectNodes("./*[local-name()='snapshotVersions']/*[local-name()='snapshotVersion']"))
+ .Where(nodes => nodes != null)
+ .SelectMany(nodes => nodes.Cast())
+ .Where(node => (node.SelectSingleNode("./*[local-name()='extension']")?.InnerText.Trim() ?? "").Equals(extension?.Trim(), StringComparison.OrdinalIgnoreCase))
+ // Classifier is optional, and the XML element does not exists if the artifact has no classifier
+ .Where(node => classifier == null || (node.SelectSingleNode("./*[local-name()='classifier']")?.InnerText.Trim() ?? "").Equals(classifier.Trim(), StringComparison.OrdinalIgnoreCase))
+ .OrderByDescending(node => node.SelectSingleNode("./*[local-name()='updated']")?.InnerText)
+ .Select(node => node.SelectSingleNode("./*[local-name()='value']")?.InnerText)
+ .FirstOrDefault()
+ ?? defaultVersion;
}
-
+
static ICredentials GetFeedCredentials(string? feedUsername, string? feedPassword)
{
ICredentials credentials = CredentialCache.DefaultNetworkCredentials;
@@ -354,6 +367,7 @@ static ICredentials GetFeedCredentials(string? feedUsername, string? feedPasswor
{
credentials = new NetworkCredential(feedUsername, feedPassword);
}
+
return credentials;
}
}
diff --git a/source/Calamari.Shared/Integration/Packages/Download/NpmPackageDownloader.cs b/source/Calamari/Integration/Packages/Download/NpmPackageDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/NpmPackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/NpmPackageDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/NuGetPackageDownloader.cs b/source/Calamari/Integration/Packages/Download/NuGetPackageDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/NuGetPackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/NuGetPackageDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/OciPackageDownloader.cs b/source/Calamari/Integration/Packages/Download/OciPackageDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/OciPackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/OciPackageDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/PackageDownloaderRetryUtils.cs b/source/Calamari/Integration/Packages/Download/PackageDownloaderRetryUtils.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/PackageDownloaderRetryUtils.cs
rename to source/Calamari/Integration/Packages/Download/PackageDownloaderRetryUtils.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/PackageDownloaderStrategy.cs b/source/Calamari/Integration/Packages/Download/PackageDownloaderStrategy.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/PackageDownloaderStrategy.cs
rename to source/Calamari/Integration/Packages/Download/PackageDownloaderStrategy.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/PackageDownloaderUtils.cs b/source/Calamari/Integration/Packages/Download/PackageDownloaderUtils.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/PackageDownloaderUtils.cs
rename to source/Calamari/Integration/Packages/Download/PackageDownloaderUtils.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/PyPiPackageDownloader.cs b/source/Calamari/Integration/Packages/Download/PyPiPackageDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/PyPiPackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/PyPiPackageDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/S3PackageDownloader.cs b/source/Calamari/Integration/Packages/Download/S3PackageDownloader.cs
similarity index 98%
rename from source/Calamari.Shared/Integration/Packages/Download/S3PackageDownloader.cs
rename to source/Calamari/Integration/Packages/Download/S3PackageDownloader.cs
index c797c05fde..ba95d09396 100644
--- a/source/Calamari.Shared/Integration/Packages/Download/S3PackageDownloader.cs
+++ b/source/Calamari/Integration/Packages/Download/S3PackageDownloader.cs
@@ -7,6 +7,7 @@
using Amazon.Runtime;
using Amazon.S3;
using Amazon.S3.Model;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.Commands;
using Calamari.Common.Features.Packages;
using Calamari.Common.Plumbing.FileSystem;
@@ -90,7 +91,7 @@ public PackagePhysicalFileMetadata DownloadPackage(string packageId,
{
try
{
- var region = variables.Get(AuthenticationVariables.Aws.Region) ?? GetBucketsRegion(feedUsername, feedPassword, bucketName);
+ var region = variables.Get(AwsAccountVariables.Region) ?? GetBucketsRegion(feedUsername, feedPassword, bucketName);
log.Verbose($"Attempting download of package {packageId} version {version} from S3 bucket {bucketName} in region {region}. Attempt #{retry + 1}");
diff --git a/source/Calamari.Shared/Integration/Packages/Download/ScriptExtractor.cs b/source/Calamari/Integration/Packages/Download/ScriptExtractor.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/ScriptExtractor.cs
rename to source/Calamari/Integration/Packages/Download/ScriptExtractor.cs
diff --git a/source/Calamari.Shared/Integration/Packages/Download/Scripts/DockerLogin.ps1 b/source/Calamari/Integration/Packages/Download/Scripts/DockerLogin.ps1
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/Scripts/DockerLogin.ps1
rename to source/Calamari/Integration/Packages/Download/Scripts/DockerLogin.ps1
diff --git a/source/Calamari.Shared/Integration/Packages/Download/Scripts/DockerLogin.sh b/source/Calamari/Integration/Packages/Download/Scripts/DockerLogin.sh
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/Scripts/DockerLogin.sh
rename to source/Calamari/Integration/Packages/Download/Scripts/DockerLogin.sh
diff --git a/source/Calamari.Shared/Integration/Packages/Download/Scripts/DockerPull.ps1 b/source/Calamari/Integration/Packages/Download/Scripts/DockerPull.ps1
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/Scripts/DockerPull.ps1
rename to source/Calamari/Integration/Packages/Download/Scripts/DockerPull.ps1
diff --git a/source/Calamari.Shared/Integration/Packages/Download/Scripts/DockerPull.sh b/source/Calamari/Integration/Packages/Download/Scripts/DockerPull.sh
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/Download/Scripts/DockerPull.sh
rename to source/Calamari/Integration/Packages/Download/Scripts/DockerPull.sh
diff --git a/source/Calamari.Shared/Integration/Packages/NuGet/InternalNuGetPackageDownloader.cs b/source/Calamari/Integration/Packages/NuGet/InternalNuGetPackageDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/NuGet/InternalNuGetPackageDownloader.cs
rename to source/Calamari/Integration/Packages/NuGet/InternalNuGetPackageDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/NuGet/NuGetFileSystemDownloader.cs b/source/Calamari/Integration/Packages/NuGet/NuGetFileSystemDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/NuGet/NuGetFileSystemDownloader.cs
rename to source/Calamari/Integration/Packages/NuGet/NuGetFileSystemDownloader.cs
diff --git a/source/Calamari.Shared/Integration/Packages/NuGet/NuGetServiceTypes.cs b/source/Calamari/Integration/Packages/NuGet/NuGetServiceTypes.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/NuGet/NuGetServiceTypes.cs
rename to source/Calamari/Integration/Packages/NuGet/NuGetServiceTypes.cs
diff --git a/source/Calamari.Shared/Integration/Packages/NuGet/NuGetV3LibDownloader.cs b/source/Calamari/Integration/Packages/NuGet/NuGetV3LibDownloader.cs
similarity index 100%
rename from source/Calamari.Shared/Integration/Packages/NuGet/NuGetV3LibDownloader.cs
rename to source/Calamari/Integration/Packages/NuGet/NuGetV3LibDownloader.cs
diff --git a/source/Calamari/Kubernetes/Authentication/AwsCliAuth.cs b/source/Calamari/Kubernetes/Authentication/AwsCliAuth.cs
index 0d6b6b891f..6d6729bb84 100644
--- a/source/Calamari/Kubernetes/Authentication/AwsCliAuth.cs
+++ b/source/Calamari/Kubernetes/Authentication/AwsCliAuth.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Text.RegularExpressions;
using Calamari.CloudAccounts;
+using Calamari.CloudAccounts.Aws;
using Calamari.Common.FeatureToggles;
using Calamari.Common.Plumbing.Logging;
using Calamari.Common.Plumbing.Variables;