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

com.pulumi.azure.nginx.kotlin.DeploymentArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azure.nginx.kotlin

import com.pulumi.azure.nginx.DeploymentArgs.builder
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentAutoScaleProfileArgs
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentAutoScaleProfileArgsBuilder
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentConfigurationArgs
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentConfigurationArgsBuilder
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentFrontendPrivateArgs
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentFrontendPrivateArgsBuilder
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentFrontendPublicArgs
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentFrontendPublicArgsBuilder
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentIdentityArgs
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentIdentityArgsBuilder
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentLoggingStorageAccountArgs
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentLoggingStorageAccountArgsBuilder
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentNetworkInterfaceArgs
import com.pulumi.azure.nginx.kotlin.inputs.DeploymentNetworkInterfaceArgsBuilder
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.Deprecated
import kotlin.Int
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 an NGINX Deployment.
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example-rg",
 *     location: "West Europe",
 * });
 * const examplePublicIp = new azure.network.PublicIp("example", {
 *     name: "example",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     allocationMethod: "Static",
 *     sku: "Standard",
 *     tags: {
 *         environment: "Production",
 *     },
 * });
 * const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
 *     name: "example-vnet",
 *     addressSpaces: ["10.0.0.0/16"],
 *     location: example.location,
 *     resourceGroupName: example.name,
 * });
 * const exampleSubnet = new azure.network.Subnet("example", {
 *     name: "example-subnet",
 *     resourceGroupName: example.name,
 *     virtualNetworkName: exampleVirtualNetwork.name,
 *     addressPrefixes: ["10.0.2.0/24"],
 *     delegations: [{
 *         name: "delegation",
 *         serviceDelegation: {
 *             name: "NGINX.NGINXPLUS/nginxDeployments",
 *             actions: ["Microsoft.Network/virtualNetworks/subnets/join/action"],
 *         },
 *     }],
 * });
 * const exampleDeployment = new azure.nginx.Deployment("example", {
 *     name: "example-nginx",
 *     resourceGroupName: example.name,
 *     sku: "publicpreview_Monthly_gmz7xq9ge3py",
 *     location: example.location,
 *     managedResourceGroup: "example",
 *     diagnoseSupportEnabled: true,
 *     automaticUpgradeChannel: "stable",
 *     frontendPublic: {
 *         ipAddresses: [examplePublicIp.id],
 *     },
 *     networkInterfaces: [{
 *         subnetId: exampleSubnet.id,
 *     }],
 *     capacity: 20,
 *     email: "[email protected]",
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_azure as azure
 * example = azure.core.ResourceGroup("example",
 *     name="example-rg",
 *     location="West Europe")
 * example_public_ip = azure.network.PublicIp("example",
 *     name="example",
 *     resource_group_name=example.name,
 *     location=example.location,
 *     allocation_method="Static",
 *     sku="Standard",
 *     tags={
 *         "environment": "Production",
 *     })
 * example_virtual_network = azure.network.VirtualNetwork("example",
 *     name="example-vnet",
 *     address_spaces=["10.0.0.0/16"],
 *     location=example.location,
 *     resource_group_name=example.name)
 * example_subnet = azure.network.Subnet("example",
 *     name="example-subnet",
 *     resource_group_name=example.name,
 *     virtual_network_name=example_virtual_network.name,
 *     address_prefixes=["10.0.2.0/24"],
 *     delegations=[{
 *         "name": "delegation",
 *         "service_delegation": {
 *             "name": "NGINX.NGINXPLUS/nginxDeployments",
 *             "actions": ["Microsoft.Network/virtualNetworks/subnets/join/action"],
 *         },
 *     }])
 * example_deployment = azure.nginx.Deployment("example",
 *     name="example-nginx",
 *     resource_group_name=example.name,
 *     sku="publicpreview_Monthly_gmz7xq9ge3py",
 *     location=example.location,
 *     managed_resource_group="example",
 *     diagnose_support_enabled=True,
 *     automatic_upgrade_channel="stable",
 *     frontend_public={
 *         "ip_addresses": [example_public_ip.id],
 *     },
 *     network_interfaces=[{
 *         "subnet_id": example_subnet.id,
 *     }],
 *     capacity=20,
 *     email="[email protected]")
 * ```
 * ```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-rg",
 *         Location = "West Europe",
 *     });
 *     var examplePublicIp = new Azure.Network.PublicIp("example", new()
 *     {
 *         Name = "example",
 *         ResourceGroupName = example.Name,
 *         Location = example.Location,
 *         AllocationMethod = "Static",
 *         Sku = "Standard",
 *         Tags =
 *         {
 *             { "environment", "Production" },
 *         },
 *     });
 *     var exampleVirtualNetwork = new Azure.Network.VirtualNetwork("example", new()
 *     {
 *         Name = "example-vnet",
 *         AddressSpaces = new[]
 *         {
 *             "10.0.0.0/16",
 *         },
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *     });
 *     var exampleSubnet = new Azure.Network.Subnet("example", new()
 *     {
 *         Name = "example-subnet",
 *         ResourceGroupName = example.Name,
 *         VirtualNetworkName = exampleVirtualNetwork.Name,
 *         AddressPrefixes = new[]
 *         {
 *             "10.0.2.0/24",
 *         },
 *         Delegations = new[]
 *         {
 *             new Azure.Network.Inputs.SubnetDelegationArgs
 *             {
 *                 Name = "delegation",
 *                 ServiceDelegation = new Azure.Network.Inputs.SubnetDelegationServiceDelegationArgs
 *                 {
 *                     Name = "NGINX.NGINXPLUS/nginxDeployments",
 *                     Actions = new[]
 *                     {
 *                         "Microsoft.Network/virtualNetworks/subnets/join/action",
 *                     },
 *                 },
 *             },
 *         },
 *     });
 *     var exampleDeployment = new Azure.Nginx.Deployment("example", new()
 *     {
 *         Name = "example-nginx",
 *         ResourceGroupName = example.Name,
 *         Sku = "publicpreview_Monthly_gmz7xq9ge3py",
 *         Location = example.Location,
 *         ManagedResourceGroup = "example",
 *         DiagnoseSupportEnabled = true,
 *         AutomaticUpgradeChannel = "stable",
 *         FrontendPublic = new Azure.Nginx.Inputs.DeploymentFrontendPublicArgs
 *         {
 *             IpAddresses = new[]
 *             {
 *                 examplePublicIp.Id,
 *             },
 *         },
 *         NetworkInterfaces = new[]
 *         {
 *             new Azure.Nginx.Inputs.DeploymentNetworkInterfaceArgs
 *             {
 *                 SubnetId = exampleSubnet.Id,
 *             },
 *         },
 *         Capacity = 20,
 *         Email = "[email protected]",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/network"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/nginx"
 * 	"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-rg"),
 * 			Location: pulumi.String("West Europe"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		examplePublicIp, err := network.NewPublicIp(ctx, "example", &network.PublicIpArgs{
 * 			Name:              pulumi.String("example"),
 * 			ResourceGroupName: example.Name,
 * 			Location:          example.Location,
 * 			AllocationMethod:  pulumi.String("Static"),
 * 			Sku:               pulumi.String("Standard"),
 * 			Tags: pulumi.StringMap{
 * 				"environment": pulumi.String("Production"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, "example", &network.VirtualNetworkArgs{
 * 			Name: pulumi.String("example-vnet"),
 * 			AddressSpaces: pulumi.StringArray{
 * 				pulumi.String("10.0.0.0/16"),
 * 			},
 * 			Location:          example.Location,
 * 			ResourceGroupName: example.Name,
 * 		})
 * 		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.0.2.0/24"),
 * 			},
 * 			Delegations: network.SubnetDelegationArray{
 * 				&network.SubnetDelegationArgs{
 * 					Name: pulumi.String("delegation"),
 * 					ServiceDelegation: &network.SubnetDelegationServiceDelegationArgs{
 * 						Name: pulumi.String("NGINX.NGINXPLUS/nginxDeployments"),
 * 						Actions: pulumi.StringArray{
 * 							pulumi.String("Microsoft.Network/virtualNetworks/subnets/join/action"),
 * 						},
 * 					},
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = nginx.NewDeployment(ctx, "example", &nginx.DeploymentArgs{
 * 			Name:                    pulumi.String("example-nginx"),
 * 			ResourceGroupName:       example.Name,
 * 			Sku:                     pulumi.String("publicpreview_Monthly_gmz7xq9ge3py"),
 * 			Location:                example.Location,
 * 			ManagedResourceGroup:    pulumi.String("example"),
 * 			DiagnoseSupportEnabled:  pulumi.Bool(true),
 * 			AutomaticUpgradeChannel: pulumi.String("stable"),
 * 			FrontendPublic: &nginx.DeploymentFrontendPublicArgs{
 * 				IpAddresses: pulumi.StringArray{
 * 					examplePublicIp.ID(),
 * 				},
 * 			},
 * 			NetworkInterfaces: nginx.DeploymentNetworkInterfaceArray{
 * 				&nginx.DeploymentNetworkInterfaceArgs{
 * 					SubnetId: exampleSubnet.ID(),
 * 				},
 * 			},
 * 			Capacity: pulumi.Int(20),
 * 			Email:    pulumi.String("[email protected]"),
 * 		})
 * 		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.PublicIp;
 * import com.pulumi.azure.network.PublicIpArgs;
 * 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.inputs.SubnetDelegationArgs;
 * import com.pulumi.azure.network.inputs.SubnetDelegationServiceDelegationArgs;
 * import com.pulumi.azure.nginx.Deployment;
 * import com.pulumi.azure.nginx.DeploymentArgs;
 * import com.pulumi.azure.nginx.inputs.DeploymentFrontendPublicArgs;
 * import com.pulumi.azure.nginx.inputs.DeploymentNetworkInterfaceArgs;
 * 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-rg")
 *             .location("West Europe")
 *             .build());
 *         var examplePublicIp = new PublicIp("examplePublicIp", PublicIpArgs.builder()
 *             .name("example")
 *             .resourceGroupName(example.name())
 *             .location(example.location())
 *             .allocationMethod("Static")
 *             .sku("Standard")
 *             .tags(Map.of("environment", "Production"))
 *             .build());
 *         var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
 *             .name("example-vnet")
 *             .addressSpaces("10.0.0.0/16")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .build());
 *         var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
 *             .name("example-subnet")
 *             .resourceGroupName(example.name())
 *             .virtualNetworkName(exampleVirtualNetwork.name())
 *             .addressPrefixes("10.0.2.0/24")
 *             .delegations(SubnetDelegationArgs.builder()
 *                 .name("delegation")
 *                 .serviceDelegation(SubnetDelegationServiceDelegationArgs.builder()
 *                     .name("NGINX.NGINXPLUS/nginxDeployments")
 *                     .actions("Microsoft.Network/virtualNetworks/subnets/join/action")
 *                     .build())
 *                 .build())
 *             .build());
 *         var exampleDeployment = new Deployment("exampleDeployment", DeploymentArgs.builder()
 *             .name("example-nginx")
 *             .resourceGroupName(example.name())
 *             .sku("publicpreview_Monthly_gmz7xq9ge3py")
 *             .location(example.location())
 *             .managedResourceGroup("example")
 *             .diagnoseSupportEnabled(true)
 *             .automaticUpgradeChannel("stable")
 *             .frontendPublic(DeploymentFrontendPublicArgs.builder()
 *                 .ipAddresses(examplePublicIp.id())
 *                 .build())
 *             .networkInterfaces(DeploymentNetworkInterfaceArgs.builder()
 *                 .subnetId(exampleSubnet.id())
 *                 .build())
 *             .capacity(20)
 *             .email("[email protected]")
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:core:ResourceGroup
 *     properties:
 *       name: example-rg
 *       location: West Europe
 *   examplePublicIp:
 *     type: azure:network:PublicIp
 *     name: example
 *     properties:
 *       name: example
 *       resourceGroupName: ${example.name}
 *       location: ${example.location}
 *       allocationMethod: Static
 *       sku: Standard
 *       tags:
 *         environment: Production
 *   exampleVirtualNetwork:
 *     type: azure:network:VirtualNetwork
 *     name: example
 *     properties:
 *       name: example-vnet
 *       addressSpaces:
 *         - 10.0.0.0/16
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *   exampleSubnet:
 *     type: azure:network:Subnet
 *     name: example
 *     properties:
 *       name: example-subnet
 *       resourceGroupName: ${example.name}
 *       virtualNetworkName: ${exampleVirtualNetwork.name}
 *       addressPrefixes:
 *         - 10.0.2.0/24
 *       delegations:
 *         - name: delegation
 *           serviceDelegation:
 *             name: NGINX.NGINXPLUS/nginxDeployments
 *             actions:
 *               - Microsoft.Network/virtualNetworks/subnets/join/action
 *   exampleDeployment:
 *     type: azure:nginx:Deployment
 *     name: example
 *     properties:
 *       name: example-nginx
 *       resourceGroupName: ${example.name}
 *       sku: publicpreview_Monthly_gmz7xq9ge3py
 *       location: ${example.location}
 *       managedResourceGroup: example
 *       diagnoseSupportEnabled: true
 *       automaticUpgradeChannel: stable
 *       frontendPublic:
 *         ipAddresses:
 *           - ${examplePublicIp.id}
 *       networkInterfaces:
 *         - subnetId: ${exampleSubnet.id}
 *       capacity: 20
 *       email: [email protected]
 * ```
 * 
 * ## Import
 * NGINX Deployments can be imported using the `resource id`, e.g.
 * ```sh
 * $ pulumi import azure:nginx/deployment:Deployment example /subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/group1/providers/Nginx.NginxPlus/nginxDeployments/dep1
 * ```
 * @property autoScaleProfiles An `auto_scale_profile` block as defined below.
 * @property automaticUpgradeChannel Specify the automatic upgrade channel for the NGINX deployment. Defaults to `stable`. The possible values are `stable` and `preview`.
 * @property capacity Specify the number of NGINX capacity units for this NGINX deployment. Defaults to `20`.
 * > **Note** For more information on NGINX capacity units, please refer to the [NGINX scaling guidance documentation](https://docs.nginx.com/nginxaas/azure/quickstart/scaling/)
 * @property configuration
 * @property diagnoseSupportEnabled Should the metrics be exported to Azure Monitor?
 * @property email Specify the preferred support contact email address for receiving alerts and notifications.
 * @property frontendPrivates One or more `frontend_private` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
 * @property frontendPublic A `frontend_public` block as defined below. Changing this forces a new NGINX Deployment to be created.
 * @property identity An `identity` block as defined below.
 * @property location The Azure Region where the NGINX Deployment should exist. Changing this forces a new NGINX Deployment to be created.
 * @property loggingStorageAccounts One or more `logging_storage_account` blocks as defined below.
 * @property managedResourceGroup Specify the managed resource group to deploy VNet injection related network resources. Changing this forces a new NGINX Deployment to be created.
 * @property name The name which should be used for this NGINX Deployment. Changing this forces a new NGINX Deployment to be created.
 * @property networkInterfaces One or more `network_interface` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
 * @property resourceGroupName The name of the Resource Group where the NGINX Deployment should exist. Changing this forces a new NGINX Deployment to be created.
 * @property sku
 * @property tags A mapping of tags which should be assigned to the NGINX Deployment.
 */
public data class DeploymentArgs(
    public val autoScaleProfiles: Output>? = null,
    public val automaticUpgradeChannel: Output? = null,
    public val capacity: Output? = null,
    @Deprecated(
        message = """
  The `configuration` block has been superseded by the `azure.nginx.Configuration` resource and will
      be removed in v4.0 of the AzureRM Provider.
  """,
    )
    public val configuration: Output? = null,
    public val diagnoseSupportEnabled: Output? = null,
    public val email: Output? = null,
    public val frontendPrivates: Output>? = null,
    public val frontendPublic: Output? = null,
    public val identity: Output? = null,
    public val location: Output? = null,
    public val loggingStorageAccounts: Output>? = null,
    public val managedResourceGroup: Output? = null,
    public val name: Output? = null,
    public val networkInterfaces: Output>? = null,
    public val resourceGroupName: Output? = null,
    public val sku: Output? = null,
    public val tags: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.nginx.DeploymentArgs =
        com.pulumi.azure.nginx.DeploymentArgs.builder()
            .autoScaleProfiles(
                autoScaleProfiles?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .automaticUpgradeChannel(automaticUpgradeChannel?.applyValue({ args0 -> args0 }))
            .capacity(capacity?.applyValue({ args0 -> args0 }))
            .configuration(configuration?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .diagnoseSupportEnabled(diagnoseSupportEnabled?.applyValue({ args0 -> args0 }))
            .email(email?.applyValue({ args0 -> args0 }))
            .frontendPrivates(
                frontendPrivates?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .frontendPublic(frontendPublic?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .identity(identity?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .location(location?.applyValue({ args0 -> args0 }))
            .loggingStorageAccounts(
                loggingStorageAccounts?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .managedResourceGroup(managedResourceGroup?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .networkInterfaces(
                networkInterfaces?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
            .sku(sku?.applyValue({ args0 -> args0 }))
            .tags(
                tags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            ).build()
}

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

    private var automaticUpgradeChannel: Output? = null

    private var capacity: Output? = null

    private var configuration: Output? = null

    private var diagnoseSupportEnabled: Output? = null

    private var email: Output? = null

    private var frontendPrivates: Output>? = null

    private var frontendPublic: Output? = null

    private var identity: Output? = null

    private var location: Output? = null

    private var loggingStorageAccounts: Output>? = null

    private var managedResourceGroup: Output? = null

    private var name: Output? = null

    private var networkInterfaces: Output>? = null

    private var resourceGroupName: Output? = null

    private var sku: Output? = null

    private var tags: Output>? = null

    /**
     * @param value An `auto_scale_profile` block as defined below.
     */
    @JvmName("nrgtyandvqqtoldi")
    public suspend fun autoScaleProfiles(`value`: Output>) {
        this.autoScaleProfiles = value
    }

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

    /**
     * @param values An `auto_scale_profile` block as defined below.
     */
    @JvmName("dyssnuqduepkhvsu")
    public suspend fun autoScaleProfiles(values: List>) {
        this.autoScaleProfiles = Output.all(values)
    }

    /**
     * @param value Specify the automatic upgrade channel for the NGINX deployment. Defaults to `stable`. The possible values are `stable` and `preview`.
     */
    @JvmName("ksdptwqdfdgkuapw")
    public suspend fun automaticUpgradeChannel(`value`: Output) {
        this.automaticUpgradeChannel = value
    }

    /**
     * @param value Specify the number of NGINX capacity units for this NGINX deployment. Defaults to `20`.
     * > **Note** For more information on NGINX capacity units, please refer to the [NGINX scaling guidance documentation](https://docs.nginx.com/nginxaas/azure/quickstart/scaling/)
     */
    @JvmName("ajkscxvhsrvkowls")
    public suspend fun capacity(`value`: Output) {
        this.capacity = value
    }

    /**
     * @param value
     */
    @Deprecated(
        message = """
  The `configuration` block has been superseded by the `azure.nginx.Configuration` resource and will
      be removed in v4.0 of the AzureRM Provider.
  """,
    )
    @JvmName("jnwefwsnbtaospss")
    public suspend fun configuration(`value`: Output) {
        this.configuration = value
    }

    /**
     * @param value Should the metrics be exported to Azure Monitor?
     */
    @JvmName("unwcxaggphiruria")
    public suspend fun diagnoseSupportEnabled(`value`: Output) {
        this.diagnoseSupportEnabled = value
    }

    /**
     * @param value Specify the preferred support contact email address for receiving alerts and notifications.
     */
    @JvmName("arxlbnxknyhxfqar")
    public suspend fun email(`value`: Output) {
        this.email = value
    }

    /**
     * @param value One or more `frontend_private` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("xonuxvjivmvvwdrf")
    public suspend fun frontendPrivates(`value`: Output>) {
        this.frontendPrivates = value
    }

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

    /**
     * @param values One or more `frontend_private` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("umgknvnubmktxtls")
    public suspend fun frontendPrivates(values: List>) {
        this.frontendPrivates = Output.all(values)
    }

    /**
     * @param value A `frontend_public` block as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("rnesowqqlpttvgym")
    public suspend fun frontendPublic(`value`: Output) {
        this.frontendPublic = value
    }

    /**
     * @param value An `identity` block as defined below.
     */
    @JvmName("eoryggyksohcfsst")
    public suspend fun identity(`value`: Output) {
        this.identity = value
    }

    /**
     * @param value The Azure Region where the NGINX Deployment should exist. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("cgcholslgcaqxdvf")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value One or more `logging_storage_account` blocks as defined below.
     */
    @JvmName("hgtrgnjtctbrrwvf")
    public suspend fun loggingStorageAccounts(`value`: Output>) {
        this.loggingStorageAccounts = value
    }

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

    /**
     * @param values One or more `logging_storage_account` blocks as defined below.
     */
    @JvmName("ivfnofjvueejvjkw")
    public suspend fun loggingStorageAccounts(values: List>) {
        this.loggingStorageAccounts = Output.all(values)
    }

    /**
     * @param value Specify the managed resource group to deploy VNet injection related network resources. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("islctobyakqqqolb")
    public suspend fun managedResourceGroup(`value`: Output) {
        this.managedResourceGroup = value
    }

    /**
     * @param value The name which should be used for this NGINX Deployment. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("rcqmidiojcfqroqd")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value One or more `network_interface` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("tpaphsjkdrbnphsn")
    public suspend fun networkInterfaces(`value`: Output>) {
        this.networkInterfaces = value
    }

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

    /**
     * @param values One or more `network_interface` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("cibmfacbyiuptilm")
    public suspend fun networkInterfaces(values: List>) {
        this.networkInterfaces = Output.all(values)
    }

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

    /**
     * @param value
     */
    @JvmName("xvfbhchugmdoilpg")
    public suspend fun sku(`value`: Output) {
        this.sku = value
    }

    /**
     * @param value A mapping of tags which should be assigned to the NGINX Deployment.
     */
    @JvmName("myerjsvxxmdqenti")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value An `auto_scale_profile` block as defined below.
     */
    @JvmName("ifbapptmqcdvurgy")
    public suspend fun autoScaleProfiles(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.autoScaleProfiles = mapped
    }

    /**
     * @param argument An `auto_scale_profile` block as defined below.
     */
    @JvmName("malwasgrxtlamolx")
    public suspend fun autoScaleProfiles(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            DeploymentAutoScaleProfileArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.autoScaleProfiles = mapped
    }

    /**
     * @param argument An `auto_scale_profile` block as defined below.
     */
    @JvmName("neuoarlljaxeifso")
    public suspend fun autoScaleProfiles(vararg argument: suspend DeploymentAutoScaleProfileArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            DeploymentAutoScaleProfileArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.autoScaleProfiles = mapped
    }

    /**
     * @param argument An `auto_scale_profile` block as defined below.
     */
    @JvmName("rxxnjtgvtkjlrscp")
    public suspend fun autoScaleProfiles(argument: suspend DeploymentAutoScaleProfileArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            DeploymentAutoScaleProfileArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.autoScaleProfiles = mapped
    }

    /**
     * @param values An `auto_scale_profile` block as defined below.
     */
    @JvmName("jyilbproydhsjehg")
    public suspend fun autoScaleProfiles(vararg values: DeploymentAutoScaleProfileArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.autoScaleProfiles = mapped
    }

    /**
     * @param value Specify the automatic upgrade channel for the NGINX deployment. Defaults to `stable`. The possible values are `stable` and `preview`.
     */
    @JvmName("dbsaipyasqdwlshu")
    public suspend fun automaticUpgradeChannel(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.automaticUpgradeChannel = mapped
    }

    /**
     * @param value Specify the number of NGINX capacity units for this NGINX deployment. Defaults to `20`.
     * > **Note** For more information on NGINX capacity units, please refer to the [NGINX scaling guidance documentation](https://docs.nginx.com/nginxaas/azure/quickstart/scaling/)
     */
    @JvmName("uatkuigcukctmkpw")
    public suspend fun capacity(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.capacity = mapped
    }

    /**
     * @param value
     */
    @Deprecated(
        message = """
  The `configuration` block has been superseded by the `azure.nginx.Configuration` resource and will
      be removed in v4.0 of the AzureRM Provider.
  """,
    )
    @JvmName("rmofdonnihrxovks")
    public suspend fun configuration(`value`: DeploymentConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.configuration = mapped
    }

    /**
     * @param argument
     */
    @Deprecated(
        message = """
  The `configuration` block has been superseded by the `azure.nginx.Configuration` resource and will
      be removed in v4.0 of the AzureRM Provider.
  """,
    )
    @JvmName("illreynmjxtxbikh")
    public suspend fun configuration(argument: suspend DeploymentConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DeploymentConfigurationArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.configuration = mapped
    }

    /**
     * @param value Should the metrics be exported to Azure Monitor?
     */
    @JvmName("vrsmlfedmcrjqskt")
    public suspend fun diagnoseSupportEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.diagnoseSupportEnabled = mapped
    }

    /**
     * @param value Specify the preferred support contact email address for receiving alerts and notifications.
     */
    @JvmName("fmbrpukrcmckgrtg")
    public suspend fun email(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.email = mapped
    }

    /**
     * @param value One or more `frontend_private` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("tiwyujuutmfpkyft")
    public suspend fun frontendPrivates(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.frontendPrivates = mapped
    }

    /**
     * @param argument One or more `frontend_private` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("yodssddmnsfeebky")
    public suspend fun frontendPrivates(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            DeploymentFrontendPrivateArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.frontendPrivates = mapped
    }

    /**
     * @param argument One or more `frontend_private` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("lpyagoighxujpukl")
    public suspend fun frontendPrivates(vararg argument: suspend DeploymentFrontendPrivateArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            DeploymentFrontendPrivateArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.frontendPrivates = mapped
    }

    /**
     * @param argument One or more `frontend_private` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("hxwvmevqhbdtpvtg")
    public suspend fun frontendPrivates(argument: suspend DeploymentFrontendPrivateArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            DeploymentFrontendPrivateArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.frontendPrivates = mapped
    }

    /**
     * @param values One or more `frontend_private` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("yhnypxcbesqxfttf")
    public suspend fun frontendPrivates(vararg values: DeploymentFrontendPrivateArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.frontendPrivates = mapped
    }

    /**
     * @param value A `frontend_public` block as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("exwqasdwgtwiubah")
    public suspend fun frontendPublic(`value`: DeploymentFrontendPublicArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.frontendPublic = mapped
    }

    /**
     * @param argument A `frontend_public` block as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("xroiacmsbuikyjqj")
    public suspend fun frontendPublic(argument: suspend DeploymentFrontendPublicArgsBuilder.() -> Unit) {
        val toBeMapped = DeploymentFrontendPublicArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.frontendPublic = mapped
    }

    /**
     * @param value An `identity` block as defined below.
     */
    @JvmName("poavmoxurhxngyfg")
    public suspend fun identity(`value`: DeploymentIdentityArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.identity = mapped
    }

    /**
     * @param argument An `identity` block as defined below.
     */
    @JvmName("ydewnakqltjgxbih")
    public suspend fun identity(argument: suspend DeploymentIdentityArgsBuilder.() -> Unit) {
        val toBeMapped = DeploymentIdentityArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.identity = mapped
    }

    /**
     * @param value The Azure Region where the NGINX Deployment should exist. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("nnyormsubmbcwtko")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value One or more `logging_storage_account` blocks as defined below.
     */
    @JvmName("yigngnvalfaekxcp")
    public suspend fun loggingStorageAccounts(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.loggingStorageAccounts = mapped
    }

    /**
     * @param argument One or more `logging_storage_account` blocks as defined below.
     */
    @JvmName("kvixajxogmkmypym")
    public suspend fun loggingStorageAccounts(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            DeploymentLoggingStorageAccountArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.loggingStorageAccounts = mapped
    }

    /**
     * @param argument One or more `logging_storage_account` blocks as defined below.
     */
    @JvmName("wuuknmcuuukmqxmk")
    public suspend fun loggingStorageAccounts(vararg argument: suspend DeploymentLoggingStorageAccountArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            DeploymentLoggingStorageAccountArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.loggingStorageAccounts = mapped
    }

    /**
     * @param argument One or more `logging_storage_account` blocks as defined below.
     */
    @JvmName("hmukdrxyximupwag")
    public suspend fun loggingStorageAccounts(argument: suspend DeploymentLoggingStorageAccountArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            DeploymentLoggingStorageAccountArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.loggingStorageAccounts = mapped
    }

    /**
     * @param values One or more `logging_storage_account` blocks as defined below.
     */
    @JvmName("bdkesosdmcpdsohb")
    public suspend fun loggingStorageAccounts(vararg values: DeploymentLoggingStorageAccountArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.loggingStorageAccounts = mapped
    }

    /**
     * @param value Specify the managed resource group to deploy VNet injection related network resources. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("nklnvtwkpyjgdbuq")
    public suspend fun managedResourceGroup(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.managedResourceGroup = mapped
    }

    /**
     * @param value The name which should be used for this NGINX Deployment. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("ymisleihrjbkrpuw")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value One or more `network_interface` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("awiwdjnnhtxjfobd")
    public suspend fun networkInterfaces(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkInterfaces = mapped
    }

    /**
     * @param argument One or more `network_interface` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("yccioadkehvpohoi")
    public suspend fun networkInterfaces(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            DeploymentNetworkInterfaceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.networkInterfaces = mapped
    }

    /**
     * @param argument One or more `network_interface` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("pvxhqhciilnomddx")
    public suspend fun networkInterfaces(vararg argument: suspend DeploymentNetworkInterfaceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            DeploymentNetworkInterfaceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.networkInterfaces = mapped
    }

    /**
     * @param argument One or more `network_interface` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("oylmlkjicybkppfl")
    public suspend fun networkInterfaces(argument: suspend DeploymentNetworkInterfaceArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            DeploymentNetworkInterfaceArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.networkInterfaces = mapped
    }

    /**
     * @param values One or more `network_interface` blocks as defined below. Changing this forces a new NGINX Deployment to be created.
     */
    @JvmName("dvsoaxccflpwvisl")
    public suspend fun networkInterfaces(vararg values: DeploymentNetworkInterfaceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.networkInterfaces = mapped
    }

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

    /**
     * @param value
     */
    @JvmName("ifwwkfdalkjuatfg")
    public suspend fun sku(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sku = mapped
    }

    /**
     * @param value A mapping of tags which should be assigned to the NGINX Deployment.
     */
    @JvmName("sppaklbtlhuvjcqb")
    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 which should be assigned to the NGINX Deployment.
     */
    @JvmName("mbcdwtpnoxdpjknx")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    internal fun build(): DeploymentArgs = DeploymentArgs(
        autoScaleProfiles = autoScaleProfiles,
        automaticUpgradeChannel = automaticUpgradeChannel,
        capacity = capacity,
        configuration = configuration,
        diagnoseSupportEnabled = diagnoseSupportEnabled,
        email = email,
        frontendPrivates = frontendPrivates,
        frontendPublic = frontendPublic,
        identity = identity,
        location = location,
        loggingStorageAccounts = loggingStorageAccounts,
        managedResourceGroup = managedResourceGroup,
        name = name,
        networkInterfaces = networkInterfaces,
        resourceGroupName = resourceGroupName,
        sku = sku,
        tags = tags,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy