File: AzureFrontDoorPrivateLinkAnnotation.cs
Web Access
Project: src\src\Aspire.Hosting.Azure.FrontDoor\Aspire.Hosting.Azure.FrontDoor.csproj (Aspire.Hosting.Azure.FrontDoor)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Aspire.Hosting.ApplicationModel;
 
namespace Aspire.Hosting.Azure;
 
/// <summary>
/// Records that an Azure Front Door reaches a compute environment through Private Link. It is added to the Front Door,
/// once per connected environment.
/// </summary>
internal sealed class AzureFrontDoorPrivateLinkAnnotation : IResourceAnnotation
{
    // Front Door limits the request message to 140 characters.
    // https://learn.microsoft.com/azure/templates/microsoft.cdn/profiles/origingroups/origins#sharedprivatelinkresourceproperties
    private const int MaxRequestMessageLength = 140;
 
    public AzureFrontDoorPrivateLinkAnnotation(
        AzureFrontDoorResource frontDoor,
        IAzureCdnPrivateLinkTarget environment)
    {
        Environment = environment;
 
        // The environment owner sees this message on the pending connection request, so it names both ends.
        var message = $"Azure Front Door {frontDoor.Name} requests access to {environment.Name}.";
        RequestMessage = message.Length <= MaxRequestMessageLength ? message : message[..MaxRequestMessageLength];
    }
 
    /// <summary>
    /// Gets the compute environment the Front Door connects to.
    /// </summary>
    public IAzureCdnPrivateLinkTarget Environment { get; }
 
    /// <summary>
    /// Gets the message that the connection request shows to the environment owner.
    /// </summary>
    public string RequestMessage { get; }
}