All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azure.privatedns.kotlin.LinkServiceArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azure.privatedns.kotlin

import com.pulumi.azure.privatedns.LinkServiceArgs.builder
import com.pulumi.azure.privatedns.kotlin.inputs.LinkServiceNatIpConfigurationArgs
import com.pulumi.azure.privatedns.kotlin.inputs.LinkServiceNatIpConfigurationArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Manages a Private Link Service.
 * > **NOTE** Private Link is now in [GA](https://docs.microsoft.com/en-gb/azure/private-link/).
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example-resources",
 *     location: "West Europe",
 * });
 * const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
 *     name: "example-network",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     addressSpaces: ["10.5.0.0/16"],
 * });
 * const exampleSubnet = new azure.network.Subnet("example", {
 *     name: "example-subnet",
 *     resourceGroupName: example.name,
 *     virtualNetworkName: exampleVirtualNetwork.name,
 *     addressPrefixes: ["10.5.1.0/24"],
 *     enforcePrivateLinkServiceNetworkPolicies: true,
 * });
 * const examplePublicIp = new azure.network.PublicIp("example", {
 *     name: "example-api",
 *     sku: "Standard",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     allocationMethod: "Static",
 * });
 * const exampleLoadBalancer = new azure.lb.LoadBalancer("example", {
 *     name: "example-lb",
 *     sku: "Standard",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     frontendIpConfigurations: [{
 *         name: examplePublicIp.name,
 *         publicIpAddressId: examplePublicIp.id,
 *     }],
 * });
 * const exampleLinkService = new azure.privatedns.LinkService("example", {
 *     name: "example-privatelink",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     autoApprovalSubscriptionIds: ["00000000-0000-0000-0000-000000000000"],
 *     visibilitySubscriptionIds: ["00000000-0000-0000-0000-000000000000"],
 *     loadBalancerFrontendIpConfigurationIds: [exampleLoadBalancer.frontendIpConfigurations.apply(frontendIpConfigurations => frontendIpConfigurations?.[0]?.id)],
 *     natIpConfigurations: [
 *         {
 *             name: "primary",
 *             privateIpAddress: "10.5.1.17",
 *             privateIpAddressVersion: "IPv4",
 *             subnetId: exampleSubnet.id,
 *             primary: true,
 *         },
 *         {
 *             name: "secondary",
 *             privateIpAddress: "10.5.1.18",
 *             privateIpAddressVersion: "IPv4",
 *             subnetId: exampleSubnet.id,
 *             primary: false,
 *         },
 *     ],
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_azure as azure
 * example = azure.core.ResourceGroup("example",
 *     name="example-resources",
 *     location="West Europe")
 * example_virtual_network = azure.network.VirtualNetwork("example",
 *     name="example-network",
 *     resource_group_name=example.name,
 *     location=example.location,
 *     address_spaces=["10.5.0.0/16"])
 * example_subnet = azure.network.Subnet("example",
 *     name="example-subnet",
 *     resource_group_name=example.name,
 *     virtual_network_name=example_virtual_network.name,
 *     address_prefixes=["10.5.1.0/24"],
 *     enforce_private_link_service_network_policies=True)
 * example_public_ip = azure.network.PublicIp("example",
 *     name="example-api",
 *     sku="Standard",
 *     location=example.location,
 *     resource_group_name=example.name,
 *     allocation_method="Static")
 * example_load_balancer = azure.lb.LoadBalancer("example",
 *     name="example-lb",
 *     sku="Standard",
 *     location=example.location,
 *     resource_group_name=example.name,
 *     frontend_ip_configurations=[{
 *         "name": example_public_ip.name,
 *         "public_ip_address_id": example_public_ip.id,
 *     }])
 * example_link_service = azure.privatedns.LinkService("example",
 *     name="example-privatelink",
 *     resource_group_name=example.name,
 *     location=example.location,
 *     auto_approval_subscription_ids=["00000000-0000-0000-0000-000000000000"],
 *     visibility_subscription_ids=["00000000-0000-0000-0000-000000000000"],
 *     load_balancer_frontend_ip_configuration_ids=[example_load_balancer.frontend_ip_configurations[0].id],
 *     nat_ip_configurations=[
 *         {
 *             "name": "primary",
 *             "private_ip_address": "10.5.1.17",
 *             "private_ip_address_version": "IPv4",
 *             "subnet_id": example_subnet.id,
 *             "primary": True,
 *         },
 *         {
 *             "name": "secondary",
 *             "private_ip_address": "10.5.1.18",
 *             "private_ip_address_version": "IPv4",
 *             "subnet_id": example_subnet.id,
 *             "primary": False,
 *         },
 *     ])
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Azure = Pulumi.Azure;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Azure.Core.ResourceGroup("example", new()
 *     {
 *         Name = "example-resources",
 *         Location = "West Europe",
 *     });
 *     var exampleVirtualNetwork = new Azure.Network.VirtualNetwork("example", new()
 *     {
 *         Name = "example-network",
 *         ResourceGroupName = example.Name,
 *         Location = example.Location,
 *         AddressSpaces = new[]
 *         {
 *             "10.5.0.0/16",
 *         },
 *     });
 *     var exampleSubnet = new Azure.Network.Subnet("example", new()
 *     {
 *         Name = "example-subnet",
 *         ResourceGroupName = example.Name,
 *         VirtualNetworkName = exampleVirtualNetwork.Name,
 *         AddressPrefixes = new[]
 *         {
 *             "10.5.1.0/24",
 *         },
 *         EnforcePrivateLinkServiceNetworkPolicies = true,
 *     });
 *     var examplePublicIp = new Azure.Network.PublicIp("example", new()
 *     {
 *         Name = "example-api",
 *         Sku = "Standard",
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *         AllocationMethod = "Static",
 *     });
 *     var exampleLoadBalancer = new Azure.Lb.LoadBalancer("example", new()
 *     {
 *         Name = "example-lb",
 *         Sku = "Standard",
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *         FrontendIpConfigurations = new[]
 *         {
 *             new Azure.Lb.Inputs.LoadBalancerFrontendIpConfigurationArgs
 *             {
 *                 Name = examplePublicIp.Name,
 *                 PublicIpAddressId = examplePublicIp.Id,
 *             },
 *         },
 *     });
 *     var exampleLinkService = new Azure.PrivateDns.LinkService("example", new()
 *     {
 *         Name = "example-privatelink",
 *         ResourceGroupName = example.Name,
 *         Location = example.Location,
 *         AutoApprovalSubscriptionIds = new[]
 *         {
 *             "00000000-0000-0000-0000-000000000000",
 *         },
 *         VisibilitySubscriptionIds = new[]
 *         {
 *             "00000000-0000-0000-0000-000000000000",
 *         },
 *         LoadBalancerFrontendIpConfigurationIds = new[]
 *         {
 *             exampleLoadBalancer.FrontendIpConfigurations.Apply(frontendIpConfigurations => frontendIpConfigurations[0]?.Id),
 *         },
 *         NatIpConfigurations = new[]
 *         {
 *             new Azure.PrivateDns.Inputs.LinkServiceNatIpConfigurationArgs
 *             {
 *                 Name = "primary",
 *                 PrivateIpAddress = "10.5.1.17",
 *                 PrivateIpAddressVersion = "IPv4",
 *                 SubnetId = exampleSubnet.Id,
 *                 Primary = true,
 *             },
 *             new Azure.PrivateDns.Inputs.LinkServiceNatIpConfigurationArgs
 *             {
 *                 Name = "secondary",
 *                 PrivateIpAddress = "10.5.1.18",
 *                 PrivateIpAddressVersion = "IPv4",
 *                 SubnetId = exampleSubnet.Id,
 *                 Primary = false,
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/lb"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/network"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/privatedns"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
 * 			Name:     pulumi.String("example-resources"),
 * 			Location: pulumi.String("West Europe"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, "example", &network.VirtualNetworkArgs{
 * 			Name:              pulumi.String("example-network"),
 * 			ResourceGroupName: example.Name,
 * 			Location:          example.Location,
 * 			AddressSpaces: pulumi.StringArray{
 * 				pulumi.String("10.5.0.0/16"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleSubnet, err := network.NewSubnet(ctx, "example", &network.SubnetArgs{
 * 			Name:               pulumi.String("example-subnet"),
 * 			ResourceGroupName:  example.Name,
 * 			VirtualNetworkName: exampleVirtualNetwork.Name,
 * 			AddressPrefixes: pulumi.StringArray{
 * 				pulumi.String("10.5.1.0/24"),
 * 			},
 * 			EnforcePrivateLinkServiceNetworkPolicies: pulumi.Bool(true),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		examplePublicIp, err := network.NewPublicIp(ctx, "example", &network.PublicIpArgs{
 * 			Name:              pulumi.String("example-api"),
 * 			Sku:               pulumi.String("Standard"),
 * 			Location:          example.Location,
 * 			ResourceGroupName: example.Name,
 * 			AllocationMethod:  pulumi.String("Static"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleLoadBalancer, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{
 * 			Name:              pulumi.String("example-lb"),
 * 			Sku:               pulumi.String("Standard"),
 * 			Location:          example.Location,
 * 			ResourceGroupName: example.Name,
 * 			FrontendIpConfigurations: lb.LoadBalancerFrontendIpConfigurationArray{
 * 				&lb.LoadBalancerFrontendIpConfigurationArgs{
 * 					Name:              examplePublicIp.Name,
 * 					PublicIpAddressId: examplePublicIp.ID(),
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = privatedns.NewLinkService(ctx, "example", &privatedns.LinkServiceArgs{
 * 			Name:              pulumi.String("example-privatelink"),
 * 			ResourceGroupName: example.Name,
 * 			Location:          example.Location,
 * 			AutoApprovalSubscriptionIds: pulumi.StringArray{
 * 				pulumi.String("00000000-0000-0000-0000-000000000000"),
 * 			},
 * 			VisibilitySubscriptionIds: pulumi.StringArray{
 * 				pulumi.String("00000000-0000-0000-0000-000000000000"),
 * 			},
 * 			LoadBalancerFrontendIpConfigurationIds: pulumi.StringArray{
 * 				pulumi.String(exampleLoadBalancer.FrontendIpConfigurations.ApplyT(func(frontendIpConfigurations []lb.LoadBalancerFrontendIpConfiguration) (*string, error) {
 * 					return &frontendIpConfigurations[0].Id, nil
 * 				}).(pulumi.StringPtrOutput)),
 * 			},
 * 			NatIpConfigurations: privatedns.LinkServiceNatIpConfigurationArray{
 * 				&privatedns.LinkServiceNatIpConfigurationArgs{
 * 					Name:                    pulumi.String("primary"),
 * 					PrivateIpAddress:        pulumi.String("10.5.1.17"),
 * 					PrivateIpAddressVersion: pulumi.String("IPv4"),
 * 					SubnetId:                exampleSubnet.ID(),
 * 					Primary:                 pulumi.Bool(true),
 * 				},
 * 				&privatedns.LinkServiceNatIpConfigurationArgs{
 * 					Name:                    pulumi.String("secondary"),
 * 					PrivateIpAddress:        pulumi.String("10.5.1.18"),
 * 					PrivateIpAddressVersion: pulumi.String("IPv4"),
 * 					SubnetId:                exampleSubnet.ID(),
 * 					Primary:                 pulumi.Bool(false),
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azure.core.ResourceGroup;
 * import com.pulumi.azure.core.ResourceGroupArgs;
 * import com.pulumi.azure.network.VirtualNetwork;
 * import com.pulumi.azure.network.VirtualNetworkArgs;
 * import com.pulumi.azure.network.Subnet;
 * import com.pulumi.azure.network.SubnetArgs;
 * import com.pulumi.azure.network.PublicIp;
 * import com.pulumi.azure.network.PublicIpArgs;
 * import com.pulumi.azure.lb.LoadBalancer;
 * import com.pulumi.azure.lb.LoadBalancerArgs;
 * import com.pulumi.azure.lb.inputs.LoadBalancerFrontendIpConfigurationArgs;
 * import com.pulumi.azure.privatedns.LinkService;
 * import com.pulumi.azure.privatedns.LinkServiceArgs;
 * import com.pulumi.azure.privatedns.inputs.LinkServiceNatIpConfigurationArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var example = new ResourceGroup("example", ResourceGroupArgs.builder()
 *             .name("example-resources")
 *             .location("West Europe")
 *             .build());
 *         var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
 *             .name("example-network")
 *             .resourceGroupName(example.name())
 *             .location(example.location())
 *             .addressSpaces("10.5.0.0/16")
 *             .build());
 *         var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
 *             .name("example-subnet")
 *             .resourceGroupName(example.name())
 *             .virtualNetworkName(exampleVirtualNetwork.name())
 *             .addressPrefixes("10.5.1.0/24")
 *             .enforcePrivateLinkServiceNetworkPolicies(true)
 *             .build());
 *         var examplePublicIp = new PublicIp("examplePublicIp", PublicIpArgs.builder()
 *             .name("example-api")
 *             .sku("Standard")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .allocationMethod("Static")
 *             .build());
 *         var exampleLoadBalancer = new LoadBalancer("exampleLoadBalancer", LoadBalancerArgs.builder()
 *             .name("example-lb")
 *             .sku("Standard")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .frontendIpConfigurations(LoadBalancerFrontendIpConfigurationArgs.builder()
 *                 .name(examplePublicIp.name())
 *                 .publicIpAddressId(examplePublicIp.id())
 *                 .build())
 *             .build());
 *         var exampleLinkService = new LinkService("exampleLinkService", LinkServiceArgs.builder()
 *             .name("example-privatelink")
 *             .resourceGroupName(example.name())
 *             .location(example.location())
 *             .autoApprovalSubscriptionIds("00000000-0000-0000-0000-000000000000")
 *             .visibilitySubscriptionIds("00000000-0000-0000-0000-000000000000")
 *             .loadBalancerFrontendIpConfigurationIds(exampleLoadBalancer.frontendIpConfigurations().applyValue(frontendIpConfigurations -> frontendIpConfigurations[0].id()))
 *             .natIpConfigurations(
 *                 LinkServiceNatIpConfigurationArgs.builder()
 *                     .name("primary")
 *                     .privateIpAddress("10.5.1.17")
 *                     .privateIpAddressVersion("IPv4")
 *                     .subnetId(exampleSubnet.id())
 *                     .primary(true)
 *                     .build(),
 *                 LinkServiceNatIpConfigurationArgs.builder()
 *                     .name("secondary")
 *                     .privateIpAddress("10.5.1.18")
 *                     .privateIpAddressVersion("IPv4")
 *                     .subnetId(exampleSubnet.id())
 *                     .primary(false)
 *                     .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:core:ResourceGroup
 *     properties:
 *       name: example-resources
 *       location: West Europe
 *   exampleVirtualNetwork:
 *     type: azure:network:VirtualNetwork
 *     name: example
 *     properties:
 *       name: example-network
 *       resourceGroupName: ${example.name}
 *       location: ${example.location}
 *       addressSpaces:
 *         - 10.5.0.0/16
 *   exampleSubnet:
 *     type: azure:network:Subnet
 *     name: example
 *     properties:
 *       name: example-subnet
 *       resourceGroupName: ${example.name}
 *       virtualNetworkName: ${exampleVirtualNetwork.name}
 *       addressPrefixes:
 *         - 10.5.1.0/24
 *       enforcePrivateLinkServiceNetworkPolicies: true
 *   examplePublicIp:
 *     type: azure:network:PublicIp
 *     name: example
 *     properties:
 *       name: example-api
 *       sku: Standard
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *       allocationMethod: Static
 *   exampleLoadBalancer:
 *     type: azure:lb:LoadBalancer
 *     name: example
 *     properties:
 *       name: example-lb
 *       sku: Standard
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *       frontendIpConfigurations:
 *         - name: ${examplePublicIp.name}
 *           publicIpAddressId: ${examplePublicIp.id}
 *   exampleLinkService:
 *     type: azure:privatedns:LinkService
 *     name: example
 *     properties:
 *       name: example-privatelink
 *       resourceGroupName: ${example.name}
 *       location: ${example.location}
 *       autoApprovalSubscriptionIds:
 *         - 00000000-0000-0000-0000-000000000000
 *       visibilitySubscriptionIds:
 *         - 00000000-0000-0000-0000-000000000000
 *       loadBalancerFrontendIpConfigurationIds:
 *         - ${exampleLoadBalancer.frontendIpConfigurations[0].id}
 *       natIpConfigurations:
 *         - name: primary
 *           privateIpAddress: 10.5.1.17
 *           privateIpAddressVersion: IPv4
 *           subnetId: ${exampleSubnet.id}
 *           primary: true
 *         - name: secondary
 *           privateIpAddress: 10.5.1.18
 *           privateIpAddressVersion: IPv4
 *           subnetId: ${exampleSubnet.id}
 *           primary: false
 * ```
 * 
 * ## Import
 * Private Link Services can be imported using the `resource id`, e.g.
 * ```sh
 * $ pulumi import azure:privatedns/linkService:LinkService example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Network/privateLinkServices/service1
 * ```
 * @property autoApprovalSubscriptionIds A list of Subscription UUID/GUID's that will be automatically be able to use this Private Link Service.
 * @property enableProxyProtocol Should the Private Link Service support the Proxy Protocol?
 * @property fqdns List of FQDNs allowed for the Private Link Service.
 * @property loadBalancerFrontendIpConfigurationIds A list of Frontend IP Configuration IDs from a Standard Load Balancer, where traffic from the Private Link Service should be routed. You can use Load Balancer Rules to direct this traffic to appropriate backend pools where your applications are running. Changing this forces a new resource to be created.
 * @property location Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
 * @property name Specifies the name of this Private Link Service. Changing this forces a new resource to be created.
 * @property natIpConfigurations One or more (up to 8) `nat_ip_configuration` block as defined below.
 * @property resourceGroupName The name of the Resource Group where the Private Link Service should exist. Changing this forces a new resource to be created.
 * @property tags A mapping of tags to assign to the resource.
 * @property visibilitySubscriptionIds A list of Subscription UUID/GUID's that will be able to see this Private Link Service.
 * > **NOTE:** If no Subscription IDs are specified then Azure allows every Subscription to see this Private Link Service.
 */
public data class LinkServiceArgs(
    public val autoApprovalSubscriptionIds: Output>? = null,
    public val enableProxyProtocol: Output? = null,
    public val fqdns: Output>? = null,
    public val loadBalancerFrontendIpConfigurationIds: Output>? = null,
    public val location: Output? = null,
    public val name: Output? = null,
    public val natIpConfigurations: Output>? = null,
    public val resourceGroupName: Output? = null,
    public val tags: Output>? = null,
    public val visibilitySubscriptionIds: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.privatedns.LinkServiceArgs =
        com.pulumi.azure.privatedns.LinkServiceArgs.builder()
            .autoApprovalSubscriptionIds(
                autoApprovalSubscriptionIds?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            )
            .enableProxyProtocol(enableProxyProtocol?.applyValue({ args0 -> args0 }))
            .fqdns(fqdns?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .loadBalancerFrontendIpConfigurationIds(
                loadBalancerFrontendIpConfigurationIds?.applyValue({ args0 ->
                    args0.map({ args0 -> args0 })
                }),
            )
            .location(location?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .natIpConfigurations(
                natIpConfigurations?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .visibilitySubscriptionIds(
                visibilitySubscriptionIds?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            ).build()
}

/**
 * Builder for [LinkServiceArgs].
 */
@PulumiTagMarker
public class LinkServiceArgsBuilder internal constructor() {
    private var autoApprovalSubscriptionIds: Output>? = null

    private var enableProxyProtocol: Output? = null

    private var fqdns: Output>? = null

    private var loadBalancerFrontendIpConfigurationIds: Output>? = null

    private var location: Output? = null

    private var name: Output? = null

    private var natIpConfigurations: Output>? = null

    private var resourceGroupName: Output? = null

    private var tags: Output>? = null

    private var visibilitySubscriptionIds: Output>? = null

    /**
     * @param value A list of Subscription UUID/GUID's that will be automatically be able to use this Private Link Service.
     */
    @JvmName("ijxleydvjeddxdqa")
    public suspend fun autoApprovalSubscriptionIds(`value`: Output>) {
        this.autoApprovalSubscriptionIds = value
    }

    @JvmName("lkxghdbcnhejxogo")
    public suspend fun autoApprovalSubscriptionIds(vararg values: Output) {
        this.autoApprovalSubscriptionIds = Output.all(values.asList())
    }

    /**
     * @param values A list of Subscription UUID/GUID's that will be automatically be able to use this Private Link Service.
     */
    @JvmName("howasigdiowncjwf")
    public suspend fun autoApprovalSubscriptionIds(values: List>) {
        this.autoApprovalSubscriptionIds = Output.all(values)
    }

    /**
     * @param value Should the Private Link Service support the Proxy Protocol?
     */
    @JvmName("ikggopbcwisqonqw")
    public suspend fun enableProxyProtocol(`value`: Output) {
        this.enableProxyProtocol = value
    }

    /**
     * @param value List of FQDNs allowed for the Private Link Service.
     */
    @JvmName("kdhmqivgroujugeh")
    public suspend fun fqdns(`value`: Output>) {
        this.fqdns = value
    }

    @JvmName("bpimyltccqawtyis")
    public suspend fun fqdns(vararg values: Output) {
        this.fqdns = Output.all(values.asList())
    }

    /**
     * @param values List of FQDNs allowed for the Private Link Service.
     */
    @JvmName("tvtcabjmstlcxsjm")
    public suspend fun fqdns(values: List>) {
        this.fqdns = Output.all(values)
    }

    /**
     * @param value A list of Frontend IP Configuration IDs from a Standard Load Balancer, where traffic from the Private Link Service should be routed. You can use Load Balancer Rules to direct this traffic to appropriate backend pools where your applications are running. Changing this forces a new resource to be created.
     */
    @JvmName("seusggicejkaphkc")
    public suspend fun loadBalancerFrontendIpConfigurationIds(`value`: Output>) {
        this.loadBalancerFrontendIpConfigurationIds = value
    }

    @JvmName("nkkorepwvdvnuioa")
    public suspend fun loadBalancerFrontendIpConfigurationIds(vararg values: Output) {
        this.loadBalancerFrontendIpConfigurationIds = Output.all(values.asList())
    }

    /**
     * @param values A list of Frontend IP Configuration IDs from a Standard Load Balancer, where traffic from the Private Link Service should be routed. You can use Load Balancer Rules to direct this traffic to appropriate backend pools where your applications are running. Changing this forces a new resource to be created.
     */
    @JvmName("rwjbotmtuyateapj")
    public suspend fun loadBalancerFrontendIpConfigurationIds(values: List>) {
        this.loadBalancerFrontendIpConfigurationIds = Output.all(values)
    }

    /**
     * @param value Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
     */
    @JvmName("xlmyvupcafscctuh")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value Specifies the name of this Private Link Service. Changing this forces a new resource to be created.
     */
    @JvmName("qmbdjlgqsfkussht")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value One or more (up to 8) `nat_ip_configuration` block as defined below.
     */
    @JvmName("sygumrxcyuklttxw")
    public suspend fun natIpConfigurations(`value`: Output>) {
        this.natIpConfigurations = value
    }

    @JvmName("fmujshpjgxyyxlcr")
    public suspend fun natIpConfigurations(vararg values: Output) {
        this.natIpConfigurations = Output.all(values.asList())
    }

    /**
     * @param values One or more (up to 8) `nat_ip_configuration` block as defined below.
     */
    @JvmName("khhidmmtplfsyssn")
    public suspend fun natIpConfigurations(values: List>) {
        this.natIpConfigurations = Output.all(values)
    }

    /**
     * @param value The name of the Resource Group where the Private Link Service should exist. Changing this forces a new resource to be created.
     */
    @JvmName("cxdnddmipsopwbae")
    public suspend fun resourceGroupName(`value`: Output) {
        this.resourceGroupName = value
    }

    /**
     * @param value A mapping of tags to assign to the resource.
     */
    @JvmName("ngqyyqbppgbshphj")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value A list of Subscription UUID/GUID's that will be able to see this Private Link Service.
     * > **NOTE:** If no Subscription IDs are specified then Azure allows every Subscription to see this Private Link Service.
     */
    @JvmName("npjsnbufljxrpysc")
    public suspend fun visibilitySubscriptionIds(`value`: Output>) {
        this.visibilitySubscriptionIds = value
    }

    @JvmName("iiuhscvexyfxywpm")
    public suspend fun visibilitySubscriptionIds(vararg values: Output) {
        this.visibilitySubscriptionIds = Output.all(values.asList())
    }

    /**
     * @param values A list of Subscription UUID/GUID's that will be able to see this Private Link Service.
     * > **NOTE:** If no Subscription IDs are specified then Azure allows every Subscription to see this Private Link Service.
     */
    @JvmName("plireemohbchmmpo")
    public suspend fun visibilitySubscriptionIds(values: List>) {
        this.visibilitySubscriptionIds = Output.all(values)
    }

    /**
     * @param value A list of Subscription UUID/GUID's that will be automatically be able to use this Private Link Service.
     */
    @JvmName("mxcovoimiqpkurdk")
    public suspend fun autoApprovalSubscriptionIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.autoApprovalSubscriptionIds = mapped
    }

    /**
     * @param values A list of Subscription UUID/GUID's that will be automatically be able to use this Private Link Service.
     */
    @JvmName("jssgwahysergurqw")
    public suspend fun autoApprovalSubscriptionIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.autoApprovalSubscriptionIds = mapped
    }

    /**
     * @param value Should the Private Link Service support the Proxy Protocol?
     */
    @JvmName("hulubovrqxunmwsc")
    public suspend fun enableProxyProtocol(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableProxyProtocol = mapped
    }

    /**
     * @param value List of FQDNs allowed for the Private Link Service.
     */
    @JvmName("gicucbyjsqxaurso")
    public suspend fun fqdns(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.fqdns = mapped
    }

    /**
     * @param values List of FQDNs allowed for the Private Link Service.
     */
    @JvmName("qmgyjjxjhkfchork")
    public suspend fun fqdns(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.fqdns = mapped
    }

    /**
     * @param value A list of Frontend IP Configuration IDs from a Standard Load Balancer, where traffic from the Private Link Service should be routed. You can use Load Balancer Rules to direct this traffic to appropriate backend pools where your applications are running. Changing this forces a new resource to be created.
     */
    @JvmName("obhyirbfsflwkjue")
    public suspend fun loadBalancerFrontendIpConfigurationIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.loadBalancerFrontendIpConfigurationIds = mapped
    }

    /**
     * @param values A list of Frontend IP Configuration IDs from a Standard Load Balancer, where traffic from the Private Link Service should be routed. You can use Load Balancer Rules to direct this traffic to appropriate backend pools where your applications are running. Changing this forces a new resource to be created.
     */
    @JvmName("ekjhviqejhbmjvpl")
    public suspend fun loadBalancerFrontendIpConfigurationIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.loadBalancerFrontendIpConfigurationIds = mapped
    }

    /**
     * @param value Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
     */
    @JvmName("awhfmmcynbsuwmpe")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value Specifies the name of this Private Link Service. Changing this forces a new resource to be created.
     */
    @JvmName("prcgvcppcqlhimyy")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value One or more (up to 8) `nat_ip_configuration` block as defined below.
     */
    @JvmName("sddhtnfevdvcxibd")
    public suspend fun natIpConfigurations(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.natIpConfigurations = mapped
    }

    /**
     * @param argument One or more (up to 8) `nat_ip_configuration` block as defined below.
     */
    @JvmName("clnxonlatiyjulfq")
    public suspend fun natIpConfigurations(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            LinkServiceNatIpConfigurationArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.natIpConfigurations = mapped
    }

    /**
     * @param argument One or more (up to 8) `nat_ip_configuration` block as defined below.
     */
    @JvmName("mqhnyrytqbxfloqh")
    public suspend fun natIpConfigurations(vararg argument: suspend LinkServiceNatIpConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            LinkServiceNatIpConfigurationArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.natIpConfigurations = mapped
    }

    /**
     * @param argument One or more (up to 8) `nat_ip_configuration` block as defined below.
     */
    @JvmName("ulkmomdrctvfcine")
    public suspend fun natIpConfigurations(argument: suspend LinkServiceNatIpConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            LinkServiceNatIpConfigurationArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.natIpConfigurations = mapped
    }

    /**
     * @param values One or more (up to 8) `nat_ip_configuration` block as defined below.
     */
    @JvmName("bpaqytqrgybxmnqp")
    public suspend fun natIpConfigurations(vararg values: LinkServiceNatIpConfigurationArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.natIpConfigurations = mapped
    }

    /**
     * @param value The name of the Resource Group where the Private Link Service should exist. Changing this forces a new resource to be created.
     */
    @JvmName("akglcjjexwmlwcxr")
    public suspend fun resourceGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceGroupName = mapped
    }

    /**
     * @param value A mapping of tags to assign to the resource.
     */
    @JvmName("qemcegduqpgpvmed")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values A mapping of tags to assign to the resource.
     */
    @JvmName("lhhuieaxkilxlrcc")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value A list of Subscription UUID/GUID's that will be able to see this Private Link Service.
     * > **NOTE:** If no Subscription IDs are specified then Azure allows every Subscription to see this Private Link Service.
     */
    @JvmName("pafagpmdpbsmibik")
    public suspend fun visibilitySubscriptionIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.visibilitySubscriptionIds = mapped
    }

    /**
     * @param values A list of Subscription UUID/GUID's that will be able to see this Private Link Service.
     * > **NOTE:** If no Subscription IDs are specified then Azure allows every Subscription to see this Private Link Service.
     */
    @JvmName("bisomixdddmwtjtp")
    public suspend fun visibilitySubscriptionIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.visibilitySubscriptionIds = mapped
    }

    internal fun build(): LinkServiceArgs = LinkServiceArgs(
        autoApprovalSubscriptionIds = autoApprovalSubscriptionIds,
        enableProxyProtocol = enableProxyProtocol,
        fqdns = fqdns,
        loadBalancerFrontendIpConfigurationIds = loadBalancerFrontendIpConfigurationIds,
        location = location,
        name = name,
        natIpConfigurations = natIpConfigurations,
        resourceGroupName = resourceGroupName,
        tags = tags,
        visibilitySubscriptionIds = visibilitySubscriptionIds,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy