in src/Azure.Deployments.Extensibility.Providers.ThirdParty/ThirdPartyExtensibilityProvider.cs [64:107]
private async Task<ExtensibilityOperationResponse> HandleRequestByContainerRegistryAsync(
string operation,
ExtensibilityOperationRequest request,
CancellationToken cancellation)
{
var providerName = request.Import.Provider;
var tag = request.Import.Version;
var containerGroupName = GenerateContainerGroupName(providerName, tag);
var providerContainerRegistry = await TryGetExtensibilityProviderContainerRegistry(providerName, tag, cancellation);
if (providerContainerRegistry is null)
{
return new ExtensibilityOperationErrorResponse(
new ExtensibilityError(
"UnknownExtensibilityProvider",
JsonPointer.Parse("/imports"),
@$"Unknown extensibility provider ""{providerName}"" with version ""{tag}""."));
}
try
{
var externalPort = providerContainerRegistry.ExternalPort;
var image = $"{providerContainerRegistry.ContainerRegistry}:{tag}";
var baseUri = await containerManager.Create(containerGroupName, image, externalPort, cancellation);
var operationUri = new Uri(baseUri, operation);
return await CallExtensibilityProviderAsync(operationUri, request, cancellation);
}
catch (Exception ex)
{
// TODO: Handle container provisioning failures
return new ExtensibilityOperationErrorResponse(
new ExtensibilityError(
"ExtensibilityProviderRequestError",
JsonPointer.Parse(string.Empty),
ex.Message));
}
finally
{
// TODO: Tear down container
// await containerManager.Delete(containerGroupName, cancellation);
}
}