Skip to content

Commit

Permalink
de-static
Browse files Browse the repository at this point in the history
  • Loading branch information
veochen-octopus committed Nov 7, 2023
1 parent 2501ee3 commit 6cbe7bc
Show file tree
Hide file tree
Showing 36 changed files with 605 additions and 453 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,11 @@ namespace Calamari.Azure.Kubernetes.Discovery
{
public class AzureKubernetesDiscoverer : KubernetesDiscovererBase
{
public AzureKubernetesDiscoverer(ILog log) : base(log)
readonly IAzureClientFactory azureClientFactory;

public AzureKubernetesDiscoverer(IAzureClientFactory azureClientFactory, ILog log) : base(log)
{
this.azureClientFactory = azureClientFactory;
}

/// <remarks>
Expand All @@ -39,7 +42,7 @@ public override IEnumerable<KubernetesCluster> DiscoverClusters(string contextJs
Log.Verbose($" Subscription ID: {account.SubscriptionNumber}");
Log.Verbose($" Tenant ID: {account.TenantId}");
Log.Verbose($" Client ID: {account.ClientId}");
var azureClient = account.CreateAzureClient();
var azureClient = azureClientFactory.CreateAzureClientFromAccount(account);

var discoveredClusters = new List<KubernetesCluster>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,10 @@
using Microsoft.Azure.Management.WebSites.Models;
using Microsoft.Rest;
using NUnit.Framework;
using Polly;
using Polly.Retry;
using FileShare = System.IO.FileShare;
using Sku = Microsoft.Azure.Management.Storage.Models.Sku;
using StorageManagementClient = Microsoft.Azure.Management.Storage.StorageManagementClient;

namespace Calamari.AzureAppService.Tests
namespace Calamari.AzureAppService.Tests.Legacy
{
public class LegacyAppServiceBehaviorFixture
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Azure.Identity;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Resources.Models;
using Calamari.AzureAppService;
using Calamari.AzureAppService.Azure;
using Calamari.CloudAccounts;
using Calamari.Testing;
Expand All @@ -14,12 +14,10 @@
using Microsoft.Azure.Management.WebSites.Models;
using Microsoft.Rest;
using NUnit.Framework;
using NUnit.Framework.Internal;
using Polly;
using Polly.Retry;
using AccountVariables = Calamari.AzureAppService.Azure.AccountVariables;

namespace Calamari.AzureAppService.Tests
namespace Calamari.AzureAppService.Tests.Legacy
{
public abstract class LegacyAppServiceIntegrationTest
{
Expand Down Expand Up @@ -56,11 +54,16 @@ public async Task Setup()
tenantId = ExternalVariables.Get(ExternalVariable.AzureSubscriptionTenantId);
subscriptionId = ExternalVariables.Get(ExternalVariable.AzureSubscriptionId);
resourceGroupLocation = Environment.GetEnvironmentVariable("AZURE_NEW_RESOURCE_REGION") ?? DefaultResourceGroupLocation;
authToken = await AzureServicePrincipalAccountExtensions.GetAuthorizationToken(tenantId,
clientId,
clientSecret,
resourceManagementEndpointBaseUri,
activeDirectoryEndpointBaseUri);

var account = new AzureServicePrincipalAccount(
subscriptionId,
clientId,
tenantId,
clientSecret,
"",
resourceManagementEndpointBaseUri,
activeDirectoryEndpointBaseUri);
authToken = await new AzureAuthTokenService().GetAuthorizationToken(account, CancellationToken.None);

var resourcesClient = new ResourcesManagementClient(subscriptionId,
new ClientSecretCredential(tenantId, clientId, clientSecret));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;
using Azure.Identity;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Resources.Models;
using Calamari.AzureAppService.Azure;
using Calamari.AzureAppService.Behaviors;
using Calamari.AzureAppService.Behaviors.Legacy;
using Calamari.AzureAppService.Json;
using Calamari.CloudAccounts;
using Calamari.Common.Commands;
Expand All @@ -23,7 +23,7 @@
using Polly.Retry;
using AccountVariables = Calamari.AzureAppService.Azure.AccountVariables;

namespace Calamari.AzureAppService.Tests
namespace Calamari.AzureAppService.Tests.Legacy
{
[TestFixture]
public class LegacyAppServiceSettingsBehaviorFixture
Expand Down Expand Up @@ -61,12 +61,16 @@ public async Task Setup()
subscriptionId = ExternalVariables.Get(ExternalVariable.AzureSubscriptionId);

var resourceGroupLocation = Environment.GetEnvironmentVariable("AZURE_NEW_RESOURCE_REGION") ?? "eastus";

authToken = await AzureServicePrincipalAccountExtensions.GetAuthorizationToken(tenantId,
clientId,
clientSecret,
resourceManagementEndpointBaseUri,
activeDirectoryEndpointBaseUri);

var account = new AzureServicePrincipalAccount(
subscriptionId,
clientId,
tenantId,
clientSecret,
"",
resourceManagementEndpointBaseUri,
activeDirectoryEndpointBaseUri);
authToken = await new AzureAuthTokenService().GetAuthorizationToken(account, CancellationToken.None);

var resourcesClient = new ResourcesManagementClient(subscriptionId,
new ClientSecretCredential(tenantId, clientId, clientSecret));
Expand Down Expand Up @@ -146,7 +150,7 @@ public async Task TestSiteAppSettings()

iVars.Add(SpecialVariables.Action.Azure.AppSettings, appSettings.json);

await new LegacyAzureAppServiceSettingsBehaviour(new InMemoryLog()).Execute(runningContext);
await new LegacyAzureAppServiceSettingsBehaviour(new AzureAuthTokenService(), new InMemoryLog()).Execute(runningContext);

await AssertAppSettings(appSettings.setting, new ConnectionStringDictionary());
}
Expand Down Expand Up @@ -175,7 +179,7 @@ public async Task TestSiteConnectionStrings()

iVars.Add(SpecialVariables.Action.Azure.ConnectionStrings, connectionStrings.json);

await new LegacyAzureAppServiceSettingsBehaviour(new InMemoryLog()).Execute(runningContext);
await new LegacyAzureAppServiceSettingsBehaviour(new AzureAuthTokenService(), new InMemoryLog()).Execute(runningContext);

await AssertAppSettings(new AppSetting[] { }, connectionStrings.connStrings);
}
Expand Down Expand Up @@ -223,7 +227,7 @@ public async Task TestSlotSettings()

await existingSettingsTask;

await new LegacyAzureAppServiceSettingsBehaviour(new InMemoryLog()).Execute(runningContext);
await new LegacyAzureAppServiceSettingsBehaviour(new AzureAuthTokenService(), new InMemoryLog()).Execute(runningContext);
await AssertAppSettings(settings.setting, connectionStrings.connStrings);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Azure.Identity;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Resources.Models;
using Calamari.AzureAppService;
using Calamari.AzureAppService.Azure;
using Calamari.AzureAppService.Behaviors;
using Calamari.AzureAppService.Json;
using Calamari.CloudAccounts;
using Calamari.Common.Commands;
using Calamari.Common.Plumbing.Variables;
Expand All @@ -19,15 +16,12 @@
using FluentAssertions;
using Microsoft.Azure.Management.WebSites;
using Microsoft.Azure.Management.WebSites.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Rest;
using Newtonsoft.Json;
using NUnit.Framework;
using Octostache;
using Polly.Retry;
using AccountVariables = Calamari.AzureAppService.Azure.AccountVariables;

namespace Calamari.AzureAppService.Tests
namespace Calamari.AzureAppService.Tests.Legacy
{
[TestFixture]
public class LegacyAzureAppServiceDeployContainerBehaviorFixture
Expand Down Expand Up @@ -60,8 +54,22 @@ public async Task Setup()

// For some reason we are having issues creating these linux resources on Standard in EastUS
var resourceGroupLocation = Environment.GetEnvironmentVariable("AZURE_NEW_RESOURCE_REGION") ?? "westus2";

var resourceManagementEndpointBaseUri =
Environment.GetEnvironmentVariable(AccountVariables.ResourceManagementEndPoint) ?? DefaultVariables.ResourceManagementEndpoint;
var activeDirectoryEndpointBaseUri =
Environment.GetEnvironmentVariable(AccountVariables.ActiveDirectoryEndPoint) ?? DefaultVariables.ActiveDirectoryEndpoint;

var account = new AzureServicePrincipalAccount(
subscriptionId,
clientId,
tenantId,
clientSecret,
"",
resourceManagementEndpointBaseUri,
activeDirectoryEndpointBaseUri);

authToken = await GetAuthToken(tenantId, clientId, clientSecret);
authToken = await new AzureAuthTokenService().GetAuthorizationToken(account, CancellationToken.None);

var resourcesClient = new ResourcesManagementClient(subscriptionId,
new ClientSecretCredential(tenantId, clientId, clientSecret));
Expand Down Expand Up @@ -133,7 +141,7 @@ public async Task AzureLinuxContainerDeploy()

var runningContext = new RunningDeployment("", newVariables);

await new LegacyAzureAppServiceDeployContainerBehavior(new InMemoryLog()).Execute(runningContext);
await new LegacyAzureAppServiceDeployContainerBehavior(new AzureAuthTokenService(), new InMemoryLog()).Execute(runningContext);

var targetSite = new AzureTargetSite(subscriptionId, resourceGroupName, site.Name);
await AssertDeploySuccessAsync(targetSite);
Expand All @@ -154,7 +162,7 @@ public async Task AzureLinuxContainerSlotDeploy()

var runningContext = new RunningDeployment("", newVariables);

await new LegacyAzureAppServiceDeployContainerBehavior(new InMemoryLog()).Execute(runningContext);
await new LegacyAzureAppServiceDeployContainerBehavior(new AzureAuthTokenService(), new InMemoryLog()).Execute(runningContext);

var targetSite = new AzureTargetSite(subscriptionId, resourceGroupName, site.Name, slotName);
await AssertDeploySuccessAsync(targetSite);
Expand Down Expand Up @@ -204,19 +212,5 @@ void AddVariables(CalamariVariables vars)
vars.Add(SpecialVariables.Action.Azure.DeploymentType, "Container");
//vars.Add(SpecialVariables.Action.Azure.ContainerSettings, BuildContainerConfigJson());
}

private async Task<string> GetAuthToken(string tenantId, string applicationId, string password)
{
var resourceManagementEndpointBaseUri =
Environment.GetEnvironmentVariable(AccountVariables.ResourceManagementEndPoint) ?? DefaultVariables.ResourceManagementEndpoint;
var activeDirectoryEndpointBaseUri =
Environment.GetEnvironmentVariable(AccountVariables.ActiveDirectoryEndPoint) ?? DefaultVariables.ActiveDirectoryEndpoint;

return await AzureServicePrincipalAccountExtensions.GetAuthorizationToken(tenantId,
applicationId,
password,
resourceManagementEndpointBaseUri,
activeDirectoryEndpointBaseUri);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
using NUnit.Framework;
using OperatingSystem = Microsoft.Azure.Management.AppService.Fluent.OperatingSystem;

namespace Calamari.AzureAppService.Tests
namespace Calamari.AzureAppService.Tests.Legacy
{
[TestFixture]
[NonParallelizable]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
using Azure.Identity;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Azure.Identity;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Resources.Models;
using Calamari.AzureAppService.Azure;
using Calamari.AzureAppService.Behaviors;
using Calamari.CloudAccounts;
using Calamari.Common.Commands;
using Calamari.Common.Features.Discovery;
using Calamari.Common.Plumbing.Variables;
Expand All @@ -12,16 +18,10 @@
using Microsoft.Azure.Management.WebSites.Models;
using Microsoft.Rest;
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Calamari.AzureAppService.Azure;
using Calamari.CloudAccounts;
using Polly.Retry;
using AccountVariables = Calamari.AzureAppService.Azure.AccountVariables;

namespace Calamari.AzureAppService.Tests
namespace Calamari.AzureAppService.Tests.Legacy
{
[TestFixture]
public class LegacyTargetDiscoveryBehaviourIntegrationTestFixture
Expand Down Expand Up @@ -65,7 +65,16 @@ public async Task Setup()
subscriptionId = ExternalVariables.Get(ExternalVariable.AzureSubscriptionId);
var resourceGroupLocation = Environment.GetEnvironmentVariable("AZURE_NEW_RESOURCE_REGION") ?? "eastus";

authToken = await AzureServicePrincipalAccountExtensions.GetAuthorizationToken(tenantId, clientId, clientSecret, resourceManagementEndpointBaseUri, activeDirectoryEndpointBaseUri);
var account = new AzureServicePrincipalAccount(
subscriptionId,
clientId,
tenantId,
clientSecret,
"",
resourceManagementEndpointBaseUri,
activeDirectoryEndpointBaseUri);

authToken = await new AzureAuthTokenService().GetAuthorizationToken(account, CancellationToken.None);

var resourcesClient = new ResourcesManagementClient(subscriptionId,
new ClientSecretCredential(tenantId, clientId, clientSecret));
Expand Down
32 changes: 0 additions & 32 deletions source/Calamari.AzureAppService/Auth.cs

This file was deleted.

32 changes: 32 additions & 0 deletions source/Calamari.AzureAppService/BasicAuthService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using System;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Calamari.AzureAppService.Azure;
using Calamari.CloudAccounts;

namespace Calamari.AzureAppService
{
public interface IBasicAuthService
{
Task<string> GetBasicAuthCreds(IAzureAccount azureAccount, AzureTargetSite targetSite, CancellationToken cancellationToken);
}

public class BasicAuthService : IBasicAuthService
{
readonly IPublishingProfileService publishingProfileService;

public BasicAuthService(IPublishingProfileService publishingProfileService)
{
this.publishingProfileService = publishingProfileService;
}

public async Task<string> GetBasicAuthCreds(IAzureAccount azureAccount, AzureTargetSite targetSite, CancellationToken cancellationToken)
{
var publishingProfile = await publishingProfileService.GetPublishingProfile(targetSite, azureAccount);
var basicAuth = $"{publishingProfile.Username}:{publishingProfile.Password}";
var credential = Convert.ToBase64String(Encoding.ASCII.GetBytes(basicAuth));
return credential;
}
}
}

0 comments on commit 6cbe7bc

Please sign in to comment.