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

com.pulumi.azurenative.desktopvirtualization.kotlin.HostPoolArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azurenative.desktopvirtualization.kotlin

import com.pulumi.azurenative.desktopvirtualization.HostPoolArgs.builder
import com.pulumi.azurenative.desktopvirtualization.kotlin.enums.HostPoolType
import com.pulumi.azurenative.desktopvirtualization.kotlin.enums.LoadBalancerType
import com.pulumi.azurenative.desktopvirtualization.kotlin.enums.PersonalDesktopAssignmentType
import com.pulumi.azurenative.desktopvirtualization.kotlin.enums.PreferredAppGroupType
import com.pulumi.azurenative.desktopvirtualization.kotlin.enums.SSOSecretType
import com.pulumi.azurenative.desktopvirtualization.kotlin.inputs.AgentUpdatePropertiesArgs
import com.pulumi.azurenative.desktopvirtualization.kotlin.inputs.AgentUpdatePropertiesArgsBuilder
import com.pulumi.azurenative.desktopvirtualization.kotlin.inputs.RegistrationInfoArgs
import com.pulumi.azurenative.desktopvirtualization.kotlin.inputs.RegistrationInfoArgsBuilder
import com.pulumi.azurenative.desktopvirtualization.kotlin.inputs.ResourceModelWithAllowedPropertySetIdentityArgs
import com.pulumi.azurenative.desktopvirtualization.kotlin.inputs.ResourceModelWithAllowedPropertySetIdentityArgsBuilder
import com.pulumi.azurenative.desktopvirtualization.kotlin.inputs.ResourceModelWithAllowedPropertySetPlanArgs
import com.pulumi.azurenative.desktopvirtualization.kotlin.inputs.ResourceModelWithAllowedPropertySetPlanArgsBuilder
import com.pulumi.azurenative.desktopvirtualization.kotlin.inputs.ResourceModelWithAllowedPropertySetSkuArgs
import com.pulumi.azurenative.desktopvirtualization.kotlin.inputs.ResourceModelWithAllowedPropertySetSkuArgsBuilder
import com.pulumi.core.Either
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.Int
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Represents a HostPool definition.
 * Azure REST API version: 2022-09-09. Prior API version in Azure Native 1.x: 2021-02-01-preview.
 * Other available API versions: 2020-11-02-preview, 2020-11-10-preview, 2022-04-01-preview, 2022-10-14-preview, 2023-07-07-preview, 2023-09-05, 2023-10-04-preview, 2023-11-01-preview, 2024-01-16-preview, 2024-03-06-preview, 2024-04-03, 2024-04-08-preview.
 * ## Example Usage
 * ### HostPool_Create
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var hostPool = new AzureNative.DesktopVirtualization.HostPool("hostPool", new()
 *     {
 *         AgentUpdate = new AzureNative.DesktopVirtualization.Inputs.AgentUpdatePropertiesArgs
 *         {
 *             MaintenanceWindowTimeZone = "Alaskan Standard Time",
 *             MaintenanceWindows = new[]
 *             {
 *                 new AzureNative.DesktopVirtualization.Inputs.MaintenanceWindowPropertiesArgs
 *                 {
 *                     DayOfWeek = AzureNative.DesktopVirtualization.DayOfWeek.Friday,
 *                     Hour = 7,
 *                 },
 *                 new AzureNative.DesktopVirtualization.Inputs.MaintenanceWindowPropertiesArgs
 *                 {
 *                     DayOfWeek = AzureNative.DesktopVirtualization.DayOfWeek.Saturday,
 *                     Hour = 8,
 *                 },
 *             },
 *             Type = AzureNative.DesktopVirtualization.SessionHostComponentUpdateType.Scheduled,
 *             UseSessionHostLocalTime = false,
 *         },
 *         Description = "des1",
 *         FriendlyName = "friendly",
 *         HostPoolName = "hostPool1",
 *         HostPoolType = AzureNative.DesktopVirtualization.HostPoolType.Pooled,
 *         LoadBalancerType = AzureNative.DesktopVirtualization.LoadBalancerType.BreadthFirst,
 *         Location = "centralus",
 *         MaxSessionLimit = 999999,
 *         PersonalDesktopAssignmentType = AzureNative.DesktopVirtualization.PersonalDesktopAssignmentType.Automatic,
 *         PreferredAppGroupType = AzureNative.DesktopVirtualization.PreferredAppGroupType.Desktop,
 *         RegistrationInfo = new AzureNative.DesktopVirtualization.Inputs.RegistrationInfoArgs
 *         {
 *             ExpirationTime = "2020-10-01T14:01:54.9571247Z",
 *             RegistrationTokenOperation = AzureNative.DesktopVirtualization.RegistrationTokenOperation.Update,
 *         },
 *         ResourceGroupName = "resourceGroup1",
 *         SsoClientId = "client",
 *         SsoClientSecretKeyVaultPath = "https://keyvault/secret",
 *         SsoSecretType = AzureNative.DesktopVirtualization.SSOSecretType.SharedKey,
 *         SsoadfsAuthority = "https://adfs",
 *         StartVMOnConnect = false,
 *         Tags =
 *         {
 *             { "tag1", "value1" },
 *             { "tag2", "value2" },
 *         },
 *         VmTemplate = "{json:json}",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	desktopvirtualization "github.com/pulumi/pulumi-azure-native-sdk/desktopvirtualization/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := desktopvirtualization.NewHostPool(ctx, "hostPool", &desktopvirtualization.HostPoolArgs{
 * 			AgentUpdate: &desktopvirtualization.AgentUpdatePropertiesArgs{
 * 				MaintenanceWindowTimeZone: pulumi.String("Alaskan Standard Time"),
 * 				MaintenanceWindows: desktopvirtualization.MaintenanceWindowPropertiesArray{
 * 					&desktopvirtualization.MaintenanceWindowPropertiesArgs{
 * 						DayOfWeek: desktopvirtualization.DayOfWeekFriday,
 * 						Hour:      pulumi.Int(7),
 * 					},
 * 					&desktopvirtualization.MaintenanceWindowPropertiesArgs{
 * 						DayOfWeek: desktopvirtualization.DayOfWeekSaturday,
 * 						Hour:      pulumi.Int(8),
 * 					},
 * 				},
 * 				Type:                    pulumi.String(desktopvirtualization.SessionHostComponentUpdateTypeScheduled),
 * 				UseSessionHostLocalTime: pulumi.Bool(false),
 * 			},
 * 			Description:                   pulumi.String("des1"),
 * 			FriendlyName:                  pulumi.String("friendly"),
 * 			HostPoolName:                  pulumi.String("hostPool1"),
 * 			HostPoolType:                  pulumi.String(desktopvirtualization.HostPoolTypePooled),
 * 			LoadBalancerType:              pulumi.String(desktopvirtualization.LoadBalancerTypeBreadthFirst),
 * 			Location:                      pulumi.String("centralus"),
 * 			MaxSessionLimit:               pulumi.Int(999999),
 * 			PersonalDesktopAssignmentType: pulumi.String(desktopvirtualization.PersonalDesktopAssignmentTypeAutomatic),
 * 			PreferredAppGroupType:         pulumi.String(desktopvirtualization.PreferredAppGroupTypeDesktop),
 * 			RegistrationInfo: &desktopvirtualization.RegistrationInfoArgs{
 * 				ExpirationTime:             pulumi.String("2020-10-01T14:01:54.9571247Z"),
 * 				RegistrationTokenOperation: pulumi.String(desktopvirtualization.RegistrationTokenOperationUpdate),
 * 			},
 * 			ResourceGroupName:           pulumi.String("resourceGroup1"),
 * 			SsoClientId:                 pulumi.String("client"),
 * 			SsoClientSecretKeyVaultPath: pulumi.String("https://keyvault/secret"),
 * 			SsoSecretType:               pulumi.String(desktopvirtualization.SSOSecretTypeSharedKey),
 * 			SsoadfsAuthority:            pulumi.String("https://adfs"),
 * 			StartVMOnConnect:            pulumi.Bool(false),
 * 			Tags: pulumi.StringMap{
 * 				"tag1": pulumi.String("value1"),
 * 				"tag2": pulumi.String("value2"),
 * 			},
 * 			VmTemplate: pulumi.String("{json:json}"),
 * 		})
 * 		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.azurenative.desktopvirtualization.HostPool;
 * import com.pulumi.azurenative.desktopvirtualization.HostPoolArgs;
 * import com.pulumi.azurenative.desktopvirtualization.inputs.AgentUpdatePropertiesArgs;
 * import com.pulumi.azurenative.desktopvirtualization.inputs.RegistrationInfoArgs;
 * 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 hostPool = new HostPool("hostPool", HostPoolArgs.builder()
 *             .agentUpdate(AgentUpdatePropertiesArgs.builder()
 *                 .maintenanceWindowTimeZone("Alaskan Standard Time")
 *                 .maintenanceWindows(
 *                     MaintenanceWindowPropertiesArgs.builder()
 *                         .dayOfWeek("Friday")
 *                         .hour(7)
 *                         .build(),
 *                     MaintenanceWindowPropertiesArgs.builder()
 *                         .dayOfWeek("Saturday")
 *                         .hour(8)
 *                         .build())
 *                 .type("Scheduled")
 *                 .useSessionHostLocalTime(false)
 *                 .build())
 *             .description("des1")
 *             .friendlyName("friendly")
 *             .hostPoolName("hostPool1")
 *             .hostPoolType("Pooled")
 *             .loadBalancerType("BreadthFirst")
 *             .location("centralus")
 *             .maxSessionLimit(999999)
 *             .personalDesktopAssignmentType("Automatic")
 *             .preferredAppGroupType("Desktop")
 *             .registrationInfo(RegistrationInfoArgs.builder()
 *                 .expirationTime("2020-10-01T14:01:54.9571247Z")
 *                 .registrationTokenOperation("Update")
 *                 .build())
 *             .resourceGroupName("resourceGroup1")
 *             .ssoClientId("client")
 *             .ssoClientSecretKeyVaultPath("https://keyvault/secret")
 *             .ssoSecretType("SharedKey")
 *             .ssoadfsAuthority("https://adfs")
 *             .startVMOnConnect(false)
 *             .tags(Map.ofEntries(
 *                 Map.entry("tag1", "value1"),
 *                 Map.entry("tag2", "value2")
 *             ))
 *             .vmTemplate("{json:json}")
 *             .build());
 *     }
 * }
 * ```
 * ## Import
 * An existing resource can be imported using its type token, name, and identifier, e.g.
 * ```sh
 * $ pulumi import azure-native:desktopvirtualization:HostPool hostPool1 /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}
 * ```
 * @property agentUpdate The session host configuration for updating agent, monitoring agent, and stack component.
 * @property customRdpProperty Custom rdp property of HostPool.
 * @property description Description of HostPool.
 * @property friendlyName Friendly name of HostPool.
 * @property hostPoolName The name of the host pool within the specified resource group
 * @property hostPoolType HostPool type for desktop.
 * @property identity
 * @property kind Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type.  If supported, the resource provider must validate and persist this value.
 * @property loadBalancerType The type of the load balancer.
 * @property location The geo-location where the resource lives
 * @property managedBy The fully qualified resource ID of the resource that manages this resource. Indicates if this resource is managed by another Azure resource. If this is present, complete mode deployment will not delete the resource if it is removed from the template since it is managed by another resource.
 * @property maxSessionLimit The max session limit of HostPool.
 * @property personalDesktopAssignmentType PersonalDesktopAssignment type for HostPool.
 * @property plan
 * @property preferredAppGroupType The type of preferred application group type, default to Desktop Application Group
 * @property registrationInfo The registration info of HostPool.
 * @property resourceGroupName The name of the resource group. The name is case insensitive.
 * @property ring The ring number of HostPool.
 * @property sku
 * @property ssoClientId ClientId for the registered Relying Party used to issue WVD SSO certificates.
 * @property ssoClientSecretKeyVaultPath Path to Azure KeyVault storing the secret used for communication to ADFS.
 * @property ssoSecretType The type of single sign on Secret Type.
 * @property ssoadfsAuthority URL to customer ADFS server for signing WVD SSO certificates.
 * @property startVMOnConnect The flag to turn on/off StartVMOnConnect feature.
 * @property tags Resource tags.
 * @property validationEnvironment Is validation environment.
 * @property vmTemplate VM template for sessionhosts configuration within hostpool.
 */
public data class HostPoolArgs(
    public val agentUpdate: Output? = null,
    public val customRdpProperty: Output? = null,
    public val description: Output? = null,
    public val friendlyName: Output? = null,
    public val hostPoolName: Output? = null,
    public val hostPoolType: Output>? = null,
    public val identity: Output? = null,
    public val kind: Output? = null,
    public val loadBalancerType: Output>? = null,
    public val location: Output? = null,
    public val managedBy: Output? = null,
    public val maxSessionLimit: Output? = null,
    public val personalDesktopAssignmentType: Output>? =
        null,
    public val plan: Output? = null,
    public val preferredAppGroupType: Output>? = null,
    public val registrationInfo: Output? = null,
    public val resourceGroupName: Output? = null,
    public val ring: Output? = null,
    public val sku: Output? = null,
    public val ssoClientId: Output? = null,
    public val ssoClientSecretKeyVaultPath: Output? = null,
    public val ssoSecretType: Output>? = null,
    public val ssoadfsAuthority: Output? = null,
    public val startVMOnConnect: Output? = null,
    public val tags: Output>? = null,
    public val validationEnvironment: Output? = null,
    public val vmTemplate: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.desktopvirtualization.HostPoolArgs =
        com.pulumi.azurenative.desktopvirtualization.HostPoolArgs.builder()
            .agentUpdate(agentUpdate?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .customRdpProperty(customRdpProperty?.applyValue({ args0 -> args0 }))
            .description(description?.applyValue({ args0 -> args0 }))
            .friendlyName(friendlyName?.applyValue({ args0 -> args0 }))
            .hostPoolName(hostPoolName?.applyValue({ args0 -> args0 }))
            .hostPoolType(
                hostPoolType?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .identity(identity?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .kind(kind?.applyValue({ args0 -> args0 }))
            .loadBalancerType(
                loadBalancerType?.applyValue({ args0 ->
                    args0.transform(
                        { args0 -> args0 },
                        { args0 -> args0.let({ args0 -> args0.toJava() }) },
                    )
                }),
            )
            .location(location?.applyValue({ args0 -> args0 }))
            .managedBy(managedBy?.applyValue({ args0 -> args0 }))
            .maxSessionLimit(maxSessionLimit?.applyValue({ args0 -> args0 }))
            .personalDesktopAssignmentType(
                personalDesktopAssignmentType?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 -> args0.let({ args0 -> args0.toJava() }) })
                }),
            )
            .plan(plan?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .preferredAppGroupType(
                preferredAppGroupType?.applyValue({ args0 ->
                    args0.transform({ args0 ->
                        args0
                    }, { args0 -> args0.let({ args0 -> args0.toJava() }) })
                }),
            )
            .registrationInfo(registrationInfo?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
            .ring(ring?.applyValue({ args0 -> args0 }))
            .sku(sku?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .ssoClientId(ssoClientId?.applyValue({ args0 -> args0 }))
            .ssoClientSecretKeyVaultPath(ssoClientSecretKeyVaultPath?.applyValue({ args0 -> args0 }))
            .ssoSecretType(
                ssoSecretType?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .ssoadfsAuthority(ssoadfsAuthority?.applyValue({ args0 -> args0 }))
            .startVMOnConnect(startVMOnConnect?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .validationEnvironment(validationEnvironment?.applyValue({ args0 -> args0 }))
            .vmTemplate(vmTemplate?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [HostPoolArgs].
 */
@PulumiTagMarker
public class HostPoolArgsBuilder internal constructor() {
    private var agentUpdate: Output? = null

    private var customRdpProperty: Output? = null

    private var description: Output? = null

    private var friendlyName: Output? = null

    private var hostPoolName: Output? = null

    private var hostPoolType: Output>? = null

    private var identity: Output? = null

    private var kind: Output? = null

    private var loadBalancerType: Output>? = null

    private var location: Output? = null

    private var managedBy: Output? = null

    private var maxSessionLimit: Output? = null

    private var personalDesktopAssignmentType: Output>? =
        null

    private var plan: Output? = null

    private var preferredAppGroupType: Output>? = null

    private var registrationInfo: Output? = null

    private var resourceGroupName: Output? = null

    private var ring: Output? = null

    private var sku: Output? = null

    private var ssoClientId: Output? = null

    private var ssoClientSecretKeyVaultPath: Output? = null

    private var ssoSecretType: Output>? = null

    private var ssoadfsAuthority: Output? = null

    private var startVMOnConnect: Output? = null

    private var tags: Output>? = null

    private var validationEnvironment: Output? = null

    private var vmTemplate: Output? = null

    /**
     * @param value The session host configuration for updating agent, monitoring agent, and stack component.
     */
    @JvmName("gxasxgkegdmchxqq")
    public suspend fun agentUpdate(`value`: Output) {
        this.agentUpdate = value
    }

    /**
     * @param value Custom rdp property of HostPool.
     */
    @JvmName("ldnidxbtgxcsgdtx")
    public suspend fun customRdpProperty(`value`: Output) {
        this.customRdpProperty = value
    }

    /**
     * @param value Description of HostPool.
     */
    @JvmName("etmmlougpwnitdby")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value Friendly name of HostPool.
     */
    @JvmName("fornrbsylirpwwwh")
    public suspend fun friendlyName(`value`: Output) {
        this.friendlyName = value
    }

    /**
     * @param value The name of the host pool within the specified resource group
     */
    @JvmName("snrmomwngishkecj")
    public suspend fun hostPoolName(`value`: Output) {
        this.hostPoolName = value
    }

    /**
     * @param value HostPool type for desktop.
     */
    @JvmName("midoovrafqhfnxos")
    public suspend fun hostPoolType(`value`: Output>) {
        this.hostPoolType = value
    }

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

    /**
     * @param value Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type.  If supported, the resource provider must validate and persist this value.
     */
    @JvmName("yelytuubimoidkec")
    public suspend fun kind(`value`: Output) {
        this.kind = value
    }

    /**
     * @param value The type of the load balancer.
     */
    @JvmName("egyudratupjevhdb")
    public suspend fun loadBalancerType(`value`: Output>) {
        this.loadBalancerType = value
    }

    /**
     * @param value The geo-location where the resource lives
     */
    @JvmName("xccmyacocxtgvpfh")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value The fully qualified resource ID of the resource that manages this resource. Indicates if this resource is managed by another Azure resource. If this is present, complete mode deployment will not delete the resource if it is removed from the template since it is managed by another resource.
     */
    @JvmName("qjarkdvibfdlbidv")
    public suspend fun managedBy(`value`: Output) {
        this.managedBy = value
    }

    /**
     * @param value The max session limit of HostPool.
     */
    @JvmName("elgweufwddwacxlr")
    public suspend fun maxSessionLimit(`value`: Output) {
        this.maxSessionLimit = value
    }

    /**
     * @param value PersonalDesktopAssignment type for HostPool.
     */
    @JvmName("vakmhsqoilghbopj")
    public suspend fun personalDesktopAssignmentType(`value`: Output>) {
        this.personalDesktopAssignmentType = value
    }

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

    /**
     * @param value The type of preferred application group type, default to Desktop Application Group
     */
    @JvmName("cngiwmuswtseknhq")
    public suspend fun preferredAppGroupType(`value`: Output>) {
        this.preferredAppGroupType = value
    }

    /**
     * @param value The registration info of HostPool.
     */
    @JvmName("ineyhjeftlnpdext")
    public suspend fun registrationInfo(`value`: Output) {
        this.registrationInfo = value
    }

    /**
     * @param value The name of the resource group. The name is case insensitive.
     */
    @JvmName("oppvqndybxpjswks")
    public suspend fun resourceGroupName(`value`: Output) {
        this.resourceGroupName = value
    }

    /**
     * @param value The ring number of HostPool.
     */
    @JvmName("laecyoxeyvkmkvrp")
    public suspend fun ring(`value`: Output) {
        this.ring = value
    }

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

    /**
     * @param value ClientId for the registered Relying Party used to issue WVD SSO certificates.
     */
    @JvmName("enqvabibufrqfqfx")
    public suspend fun ssoClientId(`value`: Output) {
        this.ssoClientId = value
    }

    /**
     * @param value Path to Azure KeyVault storing the secret used for communication to ADFS.
     */
    @JvmName("blwuhepgrcvgraee")
    public suspend fun ssoClientSecretKeyVaultPath(`value`: Output) {
        this.ssoClientSecretKeyVaultPath = value
    }

    /**
     * @param value The type of single sign on Secret Type.
     */
    @JvmName("nxgmhdnypfxktule")
    public suspend fun ssoSecretType(`value`: Output>) {
        this.ssoSecretType = value
    }

    /**
     * @param value URL to customer ADFS server for signing WVD SSO certificates.
     */
    @JvmName("prmuvudlandkcfpd")
    public suspend fun ssoadfsAuthority(`value`: Output) {
        this.ssoadfsAuthority = value
    }

    /**
     * @param value The flag to turn on/off StartVMOnConnect feature.
     */
    @JvmName("qqqxudqynliwjfji")
    public suspend fun startVMOnConnect(`value`: Output) {
        this.startVMOnConnect = value
    }

    /**
     * @param value Resource tags.
     */
    @JvmName("pbaraqqabrjkjoea")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value Is validation environment.
     */
    @JvmName("pkjnrgexujlfjwhy")
    public suspend fun validationEnvironment(`value`: Output) {
        this.validationEnvironment = value
    }

    /**
     * @param value VM template for sessionhosts configuration within hostpool.
     */
    @JvmName("kxnqbonkeynwgddu")
    public suspend fun vmTemplate(`value`: Output) {
        this.vmTemplate = value
    }

    /**
     * @param value The session host configuration for updating agent, monitoring agent, and stack component.
     */
    @JvmName("vkhvwfmvnsyrmbno")
    public suspend fun agentUpdate(`value`: AgentUpdatePropertiesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.agentUpdate = mapped
    }

    /**
     * @param argument The session host configuration for updating agent, monitoring agent, and stack component.
     */
    @JvmName("ibpjgwsccjomqndy")
    public suspend fun agentUpdate(argument: suspend AgentUpdatePropertiesArgsBuilder.() -> Unit) {
        val toBeMapped = AgentUpdatePropertiesArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.agentUpdate = mapped
    }

    /**
     * @param value Custom rdp property of HostPool.
     */
    @JvmName("pfonejiqcqrdfnna")
    public suspend fun customRdpProperty(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customRdpProperty = mapped
    }

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

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

    /**
     * @param value The name of the host pool within the specified resource group
     */
    @JvmName("kfarvdmcbkxexrfg")
    public suspend fun hostPoolName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.hostPoolName = mapped
    }

    /**
     * @param value HostPool type for desktop.
     */
    @JvmName("vviyttfypogwpsmh")
    public suspend fun hostPoolType(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.hostPoolType = mapped
    }

    /**
     * @param value HostPool type for desktop.
     */
    @JvmName("weeoqkgsapjbcomy")
    public fun hostPoolType(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.hostPoolType = mapped
    }

    /**
     * @param value HostPool type for desktop.
     */
    @JvmName("xygdbacfohwvafab")
    public fun hostPoolType(`value`: HostPoolType) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.hostPoolType = mapped
    }

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

    /**
     * @param argument
     */
    @JvmName("xkojubbccuodhjuv")
    public suspend fun identity(argument: suspend ResourceModelWithAllowedPropertySetIdentityArgsBuilder.() -> Unit) {
        val toBeMapped = ResourceModelWithAllowedPropertySetIdentityArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.identity = mapped
    }

    /**
     * @param value Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type.  If supported, the resource provider must validate and persist this value.
     */
    @JvmName("blotpgoeultytrhp")
    public suspend fun kind(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kind = mapped
    }

    /**
     * @param value The type of the load balancer.
     */
    @JvmName("ikhjbanomtyoxvnc")
    public suspend fun loadBalancerType(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.loadBalancerType = mapped
    }

    /**
     * @param value The type of the load balancer.
     */
    @JvmName("wasihuveckjgxrad")
    public fun loadBalancerType(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.loadBalancerType = mapped
    }

    /**
     * @param value The type of the load balancer.
     */
    @JvmName("tdsynixlfopkjryu")
    public fun loadBalancerType(`value`: LoadBalancerType) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.loadBalancerType = mapped
    }

    /**
     * @param value The geo-location where the resource lives
     */
    @JvmName("jasffuwgjqfcbvew")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value The fully qualified resource ID of the resource that manages this resource. Indicates if this resource is managed by another Azure resource. If this is present, complete mode deployment will not delete the resource if it is removed from the template since it is managed by another resource.
     */
    @JvmName("haccvhlwfohsfxkh")
    public suspend fun managedBy(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.managedBy = mapped
    }

    /**
     * @param value The max session limit of HostPool.
     */
    @JvmName("spodyuwifohnbuxw")
    public suspend fun maxSessionLimit(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxSessionLimit = mapped
    }

    /**
     * @param value PersonalDesktopAssignment type for HostPool.
     */
    @JvmName("ftguydmvcibbbevk")
    public suspend fun personalDesktopAssignmentType(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.personalDesktopAssignmentType = mapped
    }

    /**
     * @param value PersonalDesktopAssignment type for HostPool.
     */
    @JvmName("yscqaqdmvtfolxdg")
    public fun personalDesktopAssignmentType(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.personalDesktopAssignmentType = mapped
    }

    /**
     * @param value PersonalDesktopAssignment type for HostPool.
     */
    @JvmName("yvfogcoetovwrlnq")
    public fun personalDesktopAssignmentType(`value`: PersonalDesktopAssignmentType) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.personalDesktopAssignmentType = mapped
    }

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

    /**
     * @param argument
     */
    @JvmName("msdrdhnniwpivfrv")
    public suspend fun plan(argument: suspend ResourceModelWithAllowedPropertySetPlanArgsBuilder.() -> Unit) {
        val toBeMapped = ResourceModelWithAllowedPropertySetPlanArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.plan = mapped
    }

    /**
     * @param value The type of preferred application group type, default to Desktop Application Group
     */
    @JvmName("bkyeosharqhrgimm")
    public suspend fun preferredAppGroupType(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.preferredAppGroupType = mapped
    }

    /**
     * @param value The type of preferred application group type, default to Desktop Application Group
     */
    @JvmName("mlisnngqvppfobch")
    public fun preferredAppGroupType(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.preferredAppGroupType = mapped
    }

    /**
     * @param value The type of preferred application group type, default to Desktop Application Group
     */
    @JvmName("qmjiccssugilrkhs")
    public fun preferredAppGroupType(`value`: PreferredAppGroupType) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.preferredAppGroupType = mapped
    }

    /**
     * @param value The registration info of HostPool.
     */
    @JvmName("hhgjldbjosjhqdtc")
    public suspend fun registrationInfo(`value`: RegistrationInfoArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.registrationInfo = mapped
    }

    /**
     * @param argument The registration info of HostPool.
     */
    @JvmName("vaijqxitnekjnphb")
    public suspend fun registrationInfo(argument: suspend RegistrationInfoArgsBuilder.() -> Unit) {
        val toBeMapped = RegistrationInfoArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.registrationInfo = mapped
    }

    /**
     * @param value The name of the resource group. The name is case insensitive.
     */
    @JvmName("yxcytgwxljcptwog")
    public suspend fun resourceGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceGroupName = mapped
    }

    /**
     * @param value The ring number of HostPool.
     */
    @JvmName("ypmvgtklavbraomv")
    public suspend fun ring(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ring = mapped
    }

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

    /**
     * @param argument
     */
    @JvmName("tgbisogycechqind")
    public suspend fun sku(argument: suspend ResourceModelWithAllowedPropertySetSkuArgsBuilder.() -> Unit) {
        val toBeMapped = ResourceModelWithAllowedPropertySetSkuArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.sku = mapped
    }

    /**
     * @param value ClientId for the registered Relying Party used to issue WVD SSO certificates.
     */
    @JvmName("qkfxjtfiabpsiqyh")
    public suspend fun ssoClientId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ssoClientId = mapped
    }

    /**
     * @param value Path to Azure KeyVault storing the secret used for communication to ADFS.
     */
    @JvmName("hecbkmfstnaksjls")
    public suspend fun ssoClientSecretKeyVaultPath(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ssoClientSecretKeyVaultPath = mapped
    }

    /**
     * @param value The type of single sign on Secret Type.
     */
    @JvmName("aolqwqukgqtxsxlt")
    public suspend fun ssoSecretType(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ssoSecretType = mapped
    }

    /**
     * @param value The type of single sign on Secret Type.
     */
    @JvmName("lamftlfmpbkmdnkn")
    public fun ssoSecretType(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.ssoSecretType = mapped
    }

    /**
     * @param value The type of single sign on Secret Type.
     */
    @JvmName("xddrvbwnncggbkvg")
    public fun ssoSecretType(`value`: SSOSecretType) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.ssoSecretType = mapped
    }

    /**
     * @param value URL to customer ADFS server for signing WVD SSO certificates.
     */
    @JvmName("vrajndvifveikcyo")
    public suspend fun ssoadfsAuthority(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ssoadfsAuthority = mapped
    }

    /**
     * @param value The flag to turn on/off StartVMOnConnect feature.
     */
    @JvmName("bermirkoklbjfhrf")
    public suspend fun startVMOnConnect(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.startVMOnConnect = mapped
    }

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

    /**
     * @param values Resource tags.
     */
    @JvmName("pjfgtjyadncwkiti")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value Is validation environment.
     */
    @JvmName("yqlhpoggiilgrjbl")
    public suspend fun validationEnvironment(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.validationEnvironment = mapped
    }

    /**
     * @param value VM template for sessionhosts configuration within hostpool.
     */
    @JvmName("dltyktxnmdoobdnk")
    public suspend fun vmTemplate(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.vmTemplate = mapped
    }

    internal fun build(): HostPoolArgs = HostPoolArgs(
        agentUpdate = agentUpdate,
        customRdpProperty = customRdpProperty,
        description = description,
        friendlyName = friendlyName,
        hostPoolName = hostPoolName,
        hostPoolType = hostPoolType,
        identity = identity,
        kind = kind,
        loadBalancerType = loadBalancerType,
        location = location,
        managedBy = managedBy,
        maxSessionLimit = maxSessionLimit,
        personalDesktopAssignmentType = personalDesktopAssignmentType,
        plan = plan,
        preferredAppGroupType = preferredAppGroupType,
        registrationInfo = registrationInfo,
        resourceGroupName = resourceGroupName,
        ring = ring,
        sku = sku,
        ssoClientId = ssoClientId,
        ssoClientSecretKeyVaultPath = ssoClientSecretKeyVaultPath,
        ssoSecretType = ssoSecretType,
        ssoadfsAuthority = ssoadfsAuthority,
        startVMOnConnect = startVMOnConnect,
        tags = tags,
        validationEnvironment = validationEnvironment,
        vmTemplate = vmTemplate,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy