in src/Azure.Deployments.Extensibility.Providers.ThirdParty/ContainerManager.cs [47:98]
public async Task<Uri> Create(string containerName, string image, int externalPort, CancellationToken cancellation)
{
var containerAppName = $"{ContainerAppPrefix}{containerName}";
var resourceGroup = armClient.GetResourceGroupResource(ResourceGroupResource.CreateResourceIdentifier(appSettings.ThirdPartySubId, appSettings.ThirdPartyRgName));
var managedEnvironment = await TryGetManagedEnvironment(resourceGroup, ManagedEnvironmentName, cancellation);
if (managedEnvironment is null)
{
var result = await resourceGroup.GetManagedEnvironments().CreateOrUpdateAsync(
WaitUntil.Completed,
ManagedEnvironmentName,
new(appSettings.ThirdPartyRgLocation),
cancellation);
managedEnvironment = result.Value;
}
var containerApp = await TryGetContainerApp(resourceGroup, containerAppName, cancellation);
if (containerApp is null)
{
var appData = new ContainerAppData(appSettings.ThirdPartyRgLocation)
{
ManagedEnvironmentId = managedEnvironment.Id,
Configuration = new()
{
Ingress = new()
{
External = true,
TargetPort = externalPort,
}
},
Template = new()
{
}
};
appData.Template.Containers.Add(new()
{
Image = image,
Name = containerName,
});
var result = await resourceGroup.GetContainerApps().CreateOrUpdateAsync(
WaitUntil.Completed,
containerAppName,
appData,
cancellation);
containerApp = result.Value;
}
return new Uri($"https://{containerApp.Data.LatestRevisionFqdn}");
}