1. Packages
  2. Azure Classic
  3. API Docs
  4. desktopvirtualization
  5. ScalingPlan

We recommend using Azure Native.

Azure Classic v5.72.0 published on Monday, Apr 15, 2024 by Pulumi

azure.desktopvirtualization.ScalingPlan

Explore with Pulumi AI

azure logo

We recommend using Azure Native.

Azure Classic v5.72.0 published on Monday, Apr 15, 2024 by Pulumi

    Manages a Virtual Desktop Scaling Plan.

    Disclaimers

    Note Scaling Plans are currently in preview and are only supported in a limited number of regions. Both the Scaling Plan and any referenced Host Pools must be deployed in a supported region. Autoscale (preview) for Azure Virtual Desktop host pools.

    Note Scaling Plans require specific permissions to be granted to the Windows Virtual Desktop application before a ‘host_pool’ can be configured. Required Permissions for Scaling Plans.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as azure from "@pulumi/azure";
    import * as azuread from "@pulumi/azuread";
    import * as random from "@pulumi/random";
    
    const exampleRandomUuid = new random.RandomUuid("example", {});
    const exampleResourceGroup = new azure.core.ResourceGroup("example", {
        name: "example-resources",
        location: "West Europe",
    });
    const exampleRoleDefinition = new azure.authorization.RoleDefinition("example", {
        name: "AVD-AutoScale",
        scope: exampleResourceGroup.id,
        description: "AVD AutoScale Role",
        permissions: [{
            actions: [
                "Microsoft.Insights/eventtypes/values/read",
                "Microsoft.Compute/virtualMachines/deallocate/action",
                "Microsoft.Compute/virtualMachines/restart/action",
                "Microsoft.Compute/virtualMachines/powerOff/action",
                "Microsoft.Compute/virtualMachines/start/action",
                "Microsoft.Compute/virtualMachines/read",
                "Microsoft.DesktopVirtualization/hostpools/read",
                "Microsoft.DesktopVirtualization/hostpools/write",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/read",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/write",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/delete",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/sendMessage/action",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read",
            ],
            notActions: [],
        }],
        assignableScopes: [exampleResourceGroup.id],
    });
    const example = azuread.getServicePrincipal({
        displayName: "Windows Virtual Desktop",
    });
    const exampleAssignment = new azure.authorization.Assignment("example", {
        name: exampleRandomUuid.result,
        scope: exampleResourceGroup.id,
        roleDefinitionId: exampleRoleDefinition.roleDefinitionResourceId,
        principalId: example.then(example => example.id),
        skipServicePrincipalAadCheck: true,
    });
    const exampleHostPool = new azure.desktopvirtualization.HostPool("example", {
        name: "example-hostpool",
        location: exampleResourceGroup.location,
        resourceGroupName: exampleResourceGroup.name,
        type: "Pooled",
        validateEnvironment: true,
        loadBalancerType: "BreadthFirst",
    });
    const exampleScalingPlan = new azure.desktopvirtualization.ScalingPlan("example", {
        name: "example-scaling-plan",
        location: exampleResourceGroup.location,
        resourceGroupName: exampleResourceGroup.name,
        friendlyName: "Scaling Plan Example",
        description: "Example Scaling Plan",
        timeZone: "GMT Standard Time",
        schedules: [{
            name: "Weekdays",
            daysOfWeeks: [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday",
            ],
            rampUpStartTime: "05:00",
            rampUpLoadBalancingAlgorithm: "BreadthFirst",
            rampUpMinimumHostsPercent: 20,
            rampUpCapacityThresholdPercent: 10,
            peakStartTime: "09:00",
            peakLoadBalancingAlgorithm: "BreadthFirst",
            rampDownStartTime: "19:00",
            rampDownLoadBalancingAlgorithm: "DepthFirst",
            rampDownMinimumHostsPercent: 10,
            rampDownForceLogoffUsers: false,
            rampDownWaitTimeMinutes: 45,
            rampDownNotificationMessage: "Please log off in the next 45 minutes...",
            rampDownCapacityThresholdPercent: 5,
            rampDownStopHostsWhen: "ZeroSessions",
            offPeakStartTime: "22:00",
            offPeakLoadBalancingAlgorithm: "DepthFirst",
        }],
        hostPools: [{
            hostpoolId: exampleHostPool.id,
            scalingPlanEnabled: true,
        }],
    });
    
    import pulumi
    import pulumi_azure as azure
    import pulumi_azuread as azuread
    import pulumi_random as random
    
    example_random_uuid = random.RandomUuid("example")
    example_resource_group = azure.core.ResourceGroup("example",
        name="example-resources",
        location="West Europe")
    example_role_definition = azure.authorization.RoleDefinition("example",
        name="AVD-AutoScale",
        scope=example_resource_group.id,
        description="AVD AutoScale Role",
        permissions=[azure.authorization.RoleDefinitionPermissionArgs(
            actions=[
                "Microsoft.Insights/eventtypes/values/read",
                "Microsoft.Compute/virtualMachines/deallocate/action",
                "Microsoft.Compute/virtualMachines/restart/action",
                "Microsoft.Compute/virtualMachines/powerOff/action",
                "Microsoft.Compute/virtualMachines/start/action",
                "Microsoft.Compute/virtualMachines/read",
                "Microsoft.DesktopVirtualization/hostpools/read",
                "Microsoft.DesktopVirtualization/hostpools/write",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/read",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/write",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/delete",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/sendMessage/action",
                "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read",
            ],
            not_actions=[],
        )],
        assignable_scopes=[example_resource_group.id])
    example = azuread.get_service_principal(display_name="Windows Virtual Desktop")
    example_assignment = azure.authorization.Assignment("example",
        name=example_random_uuid.result,
        scope=example_resource_group.id,
        role_definition_id=example_role_definition.role_definition_resource_id,
        principal_id=example.id,
        skip_service_principal_aad_check=True)
    example_host_pool = azure.desktopvirtualization.HostPool("example",
        name="example-hostpool",
        location=example_resource_group.location,
        resource_group_name=example_resource_group.name,
        type="Pooled",
        validate_environment=True,
        load_balancer_type="BreadthFirst")
    example_scaling_plan = azure.desktopvirtualization.ScalingPlan("example",
        name="example-scaling-plan",
        location=example_resource_group.location,
        resource_group_name=example_resource_group.name,
        friendly_name="Scaling Plan Example",
        description="Example Scaling Plan",
        time_zone="GMT Standard Time",
        schedules=[azure.desktopvirtualization.ScalingPlanScheduleArgs(
            name="Weekdays",
            days_of_weeks=[
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday",
            ],
            ramp_up_start_time="05:00",
            ramp_up_load_balancing_algorithm="BreadthFirst",
            ramp_up_minimum_hosts_percent=20,
            ramp_up_capacity_threshold_percent=10,
            peak_start_time="09:00",
            peak_load_balancing_algorithm="BreadthFirst",
            ramp_down_start_time="19:00",
            ramp_down_load_balancing_algorithm="DepthFirst",
            ramp_down_minimum_hosts_percent=10,
            ramp_down_force_logoff_users=False,
            ramp_down_wait_time_minutes=45,
            ramp_down_notification_message="Please log off in the next 45 minutes...",
            ramp_down_capacity_threshold_percent=5,
            ramp_down_stop_hosts_when="ZeroSessions",
            off_peak_start_time="22:00",
            off_peak_load_balancing_algorithm="DepthFirst",
        )],
        host_pools=[azure.desktopvirtualization.ScalingPlanHostPoolArgs(
            hostpool_id=example_host_pool.id,
            scaling_plan_enabled=True,
        )])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/authorization"
    	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
    	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/desktopvirtualization"
    	"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread"
    	"github.com/pulumi/pulumi-random/sdk/v4/go/random"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		exampleRandomUuid, err := random.NewRandomUuid(ctx, "example", nil)
    		if err != nil {
    			return err
    		}
    		exampleResourceGroup, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
    			Name:     pulumi.String("example-resources"),
    			Location: pulumi.String("West Europe"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleRoleDefinition, err := authorization.NewRoleDefinition(ctx, "example", &authorization.RoleDefinitionArgs{
    			Name:        pulumi.String("AVD-AutoScale"),
    			Scope:       exampleResourceGroup.ID(),
    			Description: pulumi.String("AVD AutoScale Role"),
    			Permissions: authorization.RoleDefinitionPermissionArray{
    				&authorization.RoleDefinitionPermissionArgs{
    					Actions: pulumi.StringArray{
    						pulumi.String("Microsoft.Insights/eventtypes/values/read"),
    						pulumi.String("Microsoft.Compute/virtualMachines/deallocate/action"),
    						pulumi.String("Microsoft.Compute/virtualMachines/restart/action"),
    						pulumi.String("Microsoft.Compute/virtualMachines/powerOff/action"),
    						pulumi.String("Microsoft.Compute/virtualMachines/start/action"),
    						pulumi.String("Microsoft.Compute/virtualMachines/read"),
    						pulumi.String("Microsoft.DesktopVirtualization/hostpools/read"),
    						pulumi.String("Microsoft.DesktopVirtualization/hostpools/write"),
    						pulumi.String("Microsoft.DesktopVirtualization/hostpools/sessionhosts/read"),
    						pulumi.String("Microsoft.DesktopVirtualization/hostpools/sessionhosts/write"),
    						pulumi.String("Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/delete"),
    						pulumi.String("Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read"),
    						pulumi.String("Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/sendMessage/action"),
    						pulumi.String("Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read"),
    					},
    					NotActions: pulumi.StringArray{},
    				},
    			},
    			AssignableScopes: pulumi.StringArray{
    				exampleResourceGroup.ID(),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		example, err := azuread.LookupServicePrincipal(ctx, &azuread.LookupServicePrincipalArgs{
    			DisplayName: pulumi.StringRef("Windows Virtual Desktop"),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = authorization.NewAssignment(ctx, "example", &authorization.AssignmentArgs{
    			Name:                         exampleRandomUuid.Result,
    			Scope:                        exampleResourceGroup.ID(),
    			RoleDefinitionId:             exampleRoleDefinition.RoleDefinitionResourceId,
    			PrincipalId:                  pulumi.String(example.Id),
    			SkipServicePrincipalAadCheck: pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		exampleHostPool, err := desktopvirtualization.NewHostPool(ctx, "example", &desktopvirtualization.HostPoolArgs{
    			Name:                pulumi.String("example-hostpool"),
    			Location:            exampleResourceGroup.Location,
    			ResourceGroupName:   exampleResourceGroup.Name,
    			Type:                pulumi.String("Pooled"),
    			ValidateEnvironment: pulumi.Bool(true),
    			LoadBalancerType:    pulumi.String("BreadthFirst"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = desktopvirtualization.NewScalingPlan(ctx, "example", &desktopvirtualization.ScalingPlanArgs{
    			Name:              pulumi.String("example-scaling-plan"),
    			Location:          exampleResourceGroup.Location,
    			ResourceGroupName: exampleResourceGroup.Name,
    			FriendlyName:      pulumi.String("Scaling Plan Example"),
    			Description:       pulumi.String("Example Scaling Plan"),
    			TimeZone:          pulumi.String("GMT Standard Time"),
    			Schedules: desktopvirtualization.ScalingPlanScheduleArray{
    				&desktopvirtualization.ScalingPlanScheduleArgs{
    					Name: pulumi.String("Weekdays"),
    					DaysOfWeeks: pulumi.StringArray{
    						pulumi.String("Monday"),
    						pulumi.String("Tuesday"),
    						pulumi.String("Wednesday"),
    						pulumi.String("Thursday"),
    						pulumi.String("Friday"),
    					},
    					RampUpStartTime:                  pulumi.String("05:00"),
    					RampUpLoadBalancingAlgorithm:     pulumi.String("BreadthFirst"),
    					RampUpMinimumHostsPercent:        pulumi.Int(20),
    					RampUpCapacityThresholdPercent:   pulumi.Int(10),
    					PeakStartTime:                    pulumi.String("09:00"),
    					PeakLoadBalancingAlgorithm:       pulumi.String("BreadthFirst"),
    					RampDownStartTime:                pulumi.String("19:00"),
    					RampDownLoadBalancingAlgorithm:   pulumi.String("DepthFirst"),
    					RampDownMinimumHostsPercent:      pulumi.Int(10),
    					RampDownForceLogoffUsers:         pulumi.Bool(false),
    					RampDownWaitTimeMinutes:          pulumi.Int(45),
    					RampDownNotificationMessage:      pulumi.String("Please log off in the next 45 minutes..."),
    					RampDownCapacityThresholdPercent: pulumi.Int(5),
    					RampDownStopHostsWhen:            pulumi.String("ZeroSessions"),
    					OffPeakStartTime:                 pulumi.String("22:00"),
    					OffPeakLoadBalancingAlgorithm:    pulumi.String("DepthFirst"),
    				},
    			},
    			HostPools: desktopvirtualization.ScalingPlanHostPoolArray{
    				&desktopvirtualization.ScalingPlanHostPoolArgs{
    					HostpoolId:         exampleHostPool.ID(),
    					ScalingPlanEnabled: pulumi.Bool(true),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Azure = Pulumi.Azure;
    using AzureAD = Pulumi.AzureAD;
    using Random = Pulumi.Random;
    
    return await Deployment.RunAsync(() => 
    {
        var exampleRandomUuid = new Random.RandomUuid("example");
    
        var exampleResourceGroup = new Azure.Core.ResourceGroup("example", new()
        {
            Name = "example-resources",
            Location = "West Europe",
        });
    
        var exampleRoleDefinition = new Azure.Authorization.RoleDefinition("example", new()
        {
            Name = "AVD-AutoScale",
            Scope = exampleResourceGroup.Id,
            Description = "AVD AutoScale Role",
            Permissions = new[]
            {
                new Azure.Authorization.Inputs.RoleDefinitionPermissionArgs
                {
                    Actions = new[]
                    {
                        "Microsoft.Insights/eventtypes/values/read",
                        "Microsoft.Compute/virtualMachines/deallocate/action",
                        "Microsoft.Compute/virtualMachines/restart/action",
                        "Microsoft.Compute/virtualMachines/powerOff/action",
                        "Microsoft.Compute/virtualMachines/start/action",
                        "Microsoft.Compute/virtualMachines/read",
                        "Microsoft.DesktopVirtualization/hostpools/read",
                        "Microsoft.DesktopVirtualization/hostpools/write",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/read",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/write",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/delete",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/sendMessage/action",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read",
                    },
                    NotActions = new() { },
                },
            },
            AssignableScopes = new[]
            {
                exampleResourceGroup.Id,
            },
        });
    
        var example = AzureAD.GetServicePrincipal.Invoke(new()
        {
            DisplayName = "Windows Virtual Desktop",
        });
    
        var exampleAssignment = new Azure.Authorization.Assignment("example", new()
        {
            Name = exampleRandomUuid.Result,
            Scope = exampleResourceGroup.Id,
            RoleDefinitionId = exampleRoleDefinition.RoleDefinitionResourceId,
            PrincipalId = example.Apply(getServicePrincipalResult => getServicePrincipalResult.Id),
            SkipServicePrincipalAadCheck = true,
        });
    
        var exampleHostPool = new Azure.DesktopVirtualization.HostPool("example", new()
        {
            Name = "example-hostpool",
            Location = exampleResourceGroup.Location,
            ResourceGroupName = exampleResourceGroup.Name,
            Type = "Pooled",
            ValidateEnvironment = true,
            LoadBalancerType = "BreadthFirst",
        });
    
        var exampleScalingPlan = new Azure.DesktopVirtualization.ScalingPlan("example", new()
        {
            Name = "example-scaling-plan",
            Location = exampleResourceGroup.Location,
            ResourceGroupName = exampleResourceGroup.Name,
            FriendlyName = "Scaling Plan Example",
            Description = "Example Scaling Plan",
            TimeZone = "GMT Standard Time",
            Schedules = new[]
            {
                new Azure.DesktopVirtualization.Inputs.ScalingPlanScheduleArgs
                {
                    Name = "Weekdays",
                    DaysOfWeeks = new[]
                    {
                        "Monday",
                        "Tuesday",
                        "Wednesday",
                        "Thursday",
                        "Friday",
                    },
                    RampUpStartTime = "05:00",
                    RampUpLoadBalancingAlgorithm = "BreadthFirst",
                    RampUpMinimumHostsPercent = 20,
                    RampUpCapacityThresholdPercent = 10,
                    PeakStartTime = "09:00",
                    PeakLoadBalancingAlgorithm = "BreadthFirst",
                    RampDownStartTime = "19:00",
                    RampDownLoadBalancingAlgorithm = "DepthFirst",
                    RampDownMinimumHostsPercent = 10,
                    RampDownForceLogoffUsers = false,
                    RampDownWaitTimeMinutes = 45,
                    RampDownNotificationMessage = "Please log off in the next 45 minutes...",
                    RampDownCapacityThresholdPercent = 5,
                    RampDownStopHostsWhen = "ZeroSessions",
                    OffPeakStartTime = "22:00",
                    OffPeakLoadBalancingAlgorithm = "DepthFirst",
                },
            },
            HostPools = new[]
            {
                new Azure.DesktopVirtualization.Inputs.ScalingPlanHostPoolArgs
                {
                    HostpoolId = exampleHostPool.Id,
                    ScalingPlanEnabled = true,
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.random.RandomUuid;
    import com.pulumi.azure.core.ResourceGroup;
    import com.pulumi.azure.core.ResourceGroupArgs;
    import com.pulumi.azure.authorization.RoleDefinition;
    import com.pulumi.azure.authorization.RoleDefinitionArgs;
    import com.pulumi.azure.authorization.inputs.RoleDefinitionPermissionArgs;
    import com.pulumi.azuread.AzureadFunctions;
    import com.pulumi.azuread.inputs.GetServicePrincipalArgs;
    import com.pulumi.azure.authorization.Assignment;
    import com.pulumi.azure.authorization.AssignmentArgs;
    import com.pulumi.azure.desktopvirtualization.HostPool;
    import com.pulumi.azure.desktopvirtualization.HostPoolArgs;
    import com.pulumi.azure.desktopvirtualization.ScalingPlan;
    import com.pulumi.azure.desktopvirtualization.ScalingPlanArgs;
    import com.pulumi.azure.desktopvirtualization.inputs.ScalingPlanScheduleArgs;
    import com.pulumi.azure.desktopvirtualization.inputs.ScalingPlanHostPoolArgs;
    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 exampleRandomUuid = new RandomUuid("exampleRandomUuid");
    
            var exampleResourceGroup = new ResourceGroup("exampleResourceGroup", ResourceGroupArgs.builder()        
                .name("example-resources")
                .location("West Europe")
                .build());
    
            var exampleRoleDefinition = new RoleDefinition("exampleRoleDefinition", RoleDefinitionArgs.builder()        
                .name("AVD-AutoScale")
                .scope(exampleResourceGroup.id())
                .description("AVD AutoScale Role")
                .permissions(RoleDefinitionPermissionArgs.builder()
                    .actions(                
                        "Microsoft.Insights/eventtypes/values/read",
                        "Microsoft.Compute/virtualMachines/deallocate/action",
                        "Microsoft.Compute/virtualMachines/restart/action",
                        "Microsoft.Compute/virtualMachines/powerOff/action",
                        "Microsoft.Compute/virtualMachines/start/action",
                        "Microsoft.Compute/virtualMachines/read",
                        "Microsoft.DesktopVirtualization/hostpools/read",
                        "Microsoft.DesktopVirtualization/hostpools/write",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/read",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/write",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/delete",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/sendMessage/action",
                        "Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read")
                    .notActions()
                    .build())
                .assignableScopes(exampleResourceGroup.id())
                .build());
    
            final var example = AzureadFunctions.getServicePrincipal(GetServicePrincipalArgs.builder()
                .displayName("Windows Virtual Desktop")
                .build());
    
            var exampleAssignment = new Assignment("exampleAssignment", AssignmentArgs.builder()        
                .name(exampleRandomUuid.result())
                .scope(exampleResourceGroup.id())
                .roleDefinitionId(exampleRoleDefinition.roleDefinitionResourceId())
                .principalId(example.applyValue(getServicePrincipalResult -> getServicePrincipalResult.id()))
                .skipServicePrincipalAadCheck(true)
                .build());
    
            var exampleHostPool = new HostPool("exampleHostPool", HostPoolArgs.builder()        
                .name("example-hostpool")
                .location(exampleResourceGroup.location())
                .resourceGroupName(exampleResourceGroup.name())
                .type("Pooled")
                .validateEnvironment(true)
                .loadBalancerType("BreadthFirst")
                .build());
    
            var exampleScalingPlan = new ScalingPlan("exampleScalingPlan", ScalingPlanArgs.builder()        
                .name("example-scaling-plan")
                .location(exampleResourceGroup.location())
                .resourceGroupName(exampleResourceGroup.name())
                .friendlyName("Scaling Plan Example")
                .description("Example Scaling Plan")
                .timeZone("GMT Standard Time")
                .schedules(ScalingPlanScheduleArgs.builder()
                    .name("Weekdays")
                    .daysOfWeeks(                
                        "Monday",
                        "Tuesday",
                        "Wednesday",
                        "Thursday",
                        "Friday")
                    .rampUpStartTime("05:00")
                    .rampUpLoadBalancingAlgorithm("BreadthFirst")
                    .rampUpMinimumHostsPercent(20)
                    .rampUpCapacityThresholdPercent(10)
                    .peakStartTime("09:00")
                    .peakLoadBalancingAlgorithm("BreadthFirst")
                    .rampDownStartTime("19:00")
                    .rampDownLoadBalancingAlgorithm("DepthFirst")
                    .rampDownMinimumHostsPercent(10)
                    .rampDownForceLogoffUsers(false)
                    .rampDownWaitTimeMinutes(45)
                    .rampDownNotificationMessage("Please log off in the next 45 minutes...")
                    .rampDownCapacityThresholdPercent(5)
                    .rampDownStopHostsWhen("ZeroSessions")
                    .offPeakStartTime("22:00")
                    .offPeakLoadBalancingAlgorithm("DepthFirst")
                    .build())
                .hostPools(ScalingPlanHostPoolArgs.builder()
                    .hostpoolId(exampleHostPool.id())
                    .scalingPlanEnabled(true)
                    .build())
                .build());
    
        }
    }
    
    resources:
      exampleRandomUuid:
        type: random:RandomUuid
        name: example
      exampleResourceGroup:
        type: azure:core:ResourceGroup
        name: example
        properties:
          name: example-resources
          location: West Europe
      exampleRoleDefinition:
        type: azure:authorization:RoleDefinition
        name: example
        properties:
          name: AVD-AutoScale
          scope: ${exampleResourceGroup.id}
          description: AVD AutoScale Role
          permissions:
            - actions:
                - Microsoft.Insights/eventtypes/values/read
                - Microsoft.Compute/virtualMachines/deallocate/action
                - Microsoft.Compute/virtualMachines/restart/action
                - Microsoft.Compute/virtualMachines/powerOff/action
                - Microsoft.Compute/virtualMachines/start/action
                - Microsoft.Compute/virtualMachines/read
                - Microsoft.DesktopVirtualization/hostpools/read
                - Microsoft.DesktopVirtualization/hostpools/write
                - Microsoft.DesktopVirtualization/hostpools/sessionhosts/read
                - Microsoft.DesktopVirtualization/hostpools/sessionhosts/write
                - Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/delete
                - Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read
                - Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/sendMessage/action
                - Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read
              notActions: []
          assignableScopes:
            - ${exampleResourceGroup.id}
      exampleAssignment:
        type: azure:authorization:Assignment
        name: example
        properties:
          name: ${exampleRandomUuid.result}
          scope: ${exampleResourceGroup.id}
          roleDefinitionId: ${exampleRoleDefinition.roleDefinitionResourceId}
          principalId: ${example.id}
          skipServicePrincipalAadCheck: true
      exampleHostPool:
        type: azure:desktopvirtualization:HostPool
        name: example
        properties:
          name: example-hostpool
          location: ${exampleResourceGroup.location}
          resourceGroupName: ${exampleResourceGroup.name}
          type: Pooled
          validateEnvironment: true
          loadBalancerType: BreadthFirst
      exampleScalingPlan:
        type: azure:desktopvirtualization:ScalingPlan
        name: example
        properties:
          name: example-scaling-plan
          location: ${exampleResourceGroup.location}
          resourceGroupName: ${exampleResourceGroup.name}
          friendlyName: Scaling Plan Example
          description: Example Scaling Plan
          timeZone: GMT Standard Time
          schedules:
            - name: Weekdays
              daysOfWeeks:
                - Monday
                - Tuesday
                - Wednesday
                - Thursday
                - Friday
              rampUpStartTime: 05:00
              rampUpLoadBalancingAlgorithm: BreadthFirst
              rampUpMinimumHostsPercent: 20
              rampUpCapacityThresholdPercent: 10
              peakStartTime: 09:00
              peakLoadBalancingAlgorithm: BreadthFirst
              rampDownStartTime: 19:00
              rampDownLoadBalancingAlgorithm: DepthFirst
              rampDownMinimumHostsPercent: 10
              rampDownForceLogoffUsers: false
              rampDownWaitTimeMinutes: 45
              rampDownNotificationMessage: Please log off in the next 45 minutes...
              rampDownCapacityThresholdPercent: 5
              rampDownStopHostsWhen: ZeroSessions
              offPeakStartTime: 22:00
              offPeakLoadBalancingAlgorithm: DepthFirst
          hostPools:
            - hostpoolId: ${exampleHostPool.id}
              scalingPlanEnabled: true
    variables:
      example:
        fn::invoke:
          Function: azuread:getServicePrincipal
          Arguments:
            displayName: Windows Virtual Desktop
    

    Create ScalingPlan Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new ScalingPlan(name: string, args: ScalingPlanArgs, opts?: CustomResourceOptions);
    @overload
    def ScalingPlan(resource_name: str,
                    args: ScalingPlanArgs,
                    opts: Optional[ResourceOptions] = None)
    
    @overload
    def ScalingPlan(resource_name: str,
                    opts: Optional[ResourceOptions] = None,
                    resource_group_name: Optional[str] = None,
                    schedules: Optional[Sequence[ScalingPlanScheduleArgs]] = None,
                    time_zone: Optional[str] = None,
                    description: Optional[str] = None,
                    exclusion_tag: Optional[str] = None,
                    friendly_name: Optional[str] = None,
                    host_pools: Optional[Sequence[ScalingPlanHostPoolArgs]] = None,
                    location: Optional[str] = None,
                    name: Optional[str] = None,
                    tags: Optional[Mapping[str, str]] = None)
    func NewScalingPlan(ctx *Context, name string, args ScalingPlanArgs, opts ...ResourceOption) (*ScalingPlan, error)
    public ScalingPlan(string name, ScalingPlanArgs args, CustomResourceOptions? opts = null)
    public ScalingPlan(String name, ScalingPlanArgs args)
    public ScalingPlan(String name, ScalingPlanArgs args, CustomResourceOptions options)
    
    type: azure:desktopvirtualization:ScalingPlan
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args ScalingPlanArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args ScalingPlanArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args ScalingPlanArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args ScalingPlanArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args ScalingPlanArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Example

    The following reference example uses placeholder values for all input properties.

    var scalingPlanResource = new Azure.DesktopVirtualization.ScalingPlan("scalingPlanResource", new()
    {
        ResourceGroupName = "string",
        Schedules = new[]
        {
            new Azure.DesktopVirtualization.Inputs.ScalingPlanScheduleArgs
            {
                RampDownLoadBalancingAlgorithm = "string",
                OffPeakLoadBalancingAlgorithm = "string",
                RampDownMinimumHostsPercent = 0,
                RampDownNotificationMessage = "string",
                PeakLoadBalancingAlgorithm = "string",
                PeakStartTime = "string",
                RampDownCapacityThresholdPercent = 0,
                RampDownForceLogoffUsers = false,
                RampUpStartTime = "string",
                Name = "string",
                OffPeakStartTime = "string",
                RampDownStartTime = "string",
                RampDownStopHostsWhen = "string",
                RampDownWaitTimeMinutes = 0,
                DaysOfWeeks = new[]
                {
                    "string",
                },
                RampUpLoadBalancingAlgorithm = "string",
                RampUpMinimumHostsPercent = 0,
                RampUpCapacityThresholdPercent = 0,
            },
        },
        TimeZone = "string",
        Description = "string",
        ExclusionTag = "string",
        FriendlyName = "string",
        HostPools = new[]
        {
            new Azure.DesktopVirtualization.Inputs.ScalingPlanHostPoolArgs
            {
                HostpoolId = "string",
                ScalingPlanEnabled = false,
            },
        },
        Location = "string",
        Name = "string",
        Tags = 
        {
            { "string", "string" },
        },
    });
    
    example, err := desktopvirtualization.NewScalingPlan(ctx, "scalingPlanResource", &desktopvirtualization.ScalingPlanArgs{
    	ResourceGroupName: pulumi.String("string"),
    	Schedules: desktopvirtualization.ScalingPlanScheduleArray{
    		&desktopvirtualization.ScalingPlanScheduleArgs{
    			RampDownLoadBalancingAlgorithm:   pulumi.String("string"),
    			OffPeakLoadBalancingAlgorithm:    pulumi.String("string"),
    			RampDownMinimumHostsPercent:      pulumi.Int(0),
    			RampDownNotificationMessage:      pulumi.String("string"),
    			PeakLoadBalancingAlgorithm:       pulumi.String("string"),
    			PeakStartTime:                    pulumi.String("string"),
    			RampDownCapacityThresholdPercent: pulumi.Int(0),
    			RampDownForceLogoffUsers:         pulumi.Bool(false),
    			RampUpStartTime:                  pulumi.String("string"),
    			Name:                             pulumi.String("string"),
    			OffPeakStartTime:                 pulumi.String("string"),
    			RampDownStartTime:                pulumi.String("string"),
    			RampDownStopHostsWhen:            pulumi.String("string"),
    			RampDownWaitTimeMinutes:          pulumi.Int(0),
    			DaysOfWeeks: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			RampUpLoadBalancingAlgorithm:   pulumi.String("string"),
    			RampUpMinimumHostsPercent:      pulumi.Int(0),
    			RampUpCapacityThresholdPercent: pulumi.Int(0),
    		},
    	},
    	TimeZone:     pulumi.String("string"),
    	Description:  pulumi.String("string"),
    	ExclusionTag: pulumi.String("string"),
    	FriendlyName: pulumi.String("string"),
    	HostPools: desktopvirtualization.ScalingPlanHostPoolArray{
    		&desktopvirtualization.ScalingPlanHostPoolArgs{
    			HostpoolId:         pulumi.String("string"),
    			ScalingPlanEnabled: pulumi.Bool(false),
    		},
    	},
    	Location: pulumi.String("string"),
    	Name:     pulumi.String("string"),
    	Tags: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    })
    
    var scalingPlanResource = new ScalingPlan("scalingPlanResource", ScalingPlanArgs.builder()        
        .resourceGroupName("string")
        .schedules(ScalingPlanScheduleArgs.builder()
            .rampDownLoadBalancingAlgorithm("string")
            .offPeakLoadBalancingAlgorithm("string")
            .rampDownMinimumHostsPercent(0)
            .rampDownNotificationMessage("string")
            .peakLoadBalancingAlgorithm("string")
            .peakStartTime("string")
            .rampDownCapacityThresholdPercent(0)
            .rampDownForceLogoffUsers(false)
            .rampUpStartTime("string")
            .name("string")
            .offPeakStartTime("string")
            .rampDownStartTime("string")
            .rampDownStopHostsWhen("string")
            .rampDownWaitTimeMinutes(0)
            .daysOfWeeks("string")
            .rampUpLoadBalancingAlgorithm("string")
            .rampUpMinimumHostsPercent(0)
            .rampUpCapacityThresholdPercent(0)
            .build())
        .timeZone("string")
        .description("string")
        .exclusionTag("string")
        .friendlyName("string")
        .hostPools(ScalingPlanHostPoolArgs.builder()
            .hostpoolId("string")
            .scalingPlanEnabled(false)
            .build())
        .location("string")
        .name("string")
        .tags(Map.of("string", "string"))
        .build());
    
    scaling_plan_resource = azure.desktopvirtualization.ScalingPlan("scalingPlanResource",
        resource_group_name="string",
        schedules=[azure.desktopvirtualization.ScalingPlanScheduleArgs(
            ramp_down_load_balancing_algorithm="string",
            off_peak_load_balancing_algorithm="string",
            ramp_down_minimum_hosts_percent=0,
            ramp_down_notification_message="string",
            peak_load_balancing_algorithm="string",
            peak_start_time="string",
            ramp_down_capacity_threshold_percent=0,
            ramp_down_force_logoff_users=False,
            ramp_up_start_time="string",
            name="string",
            off_peak_start_time="string",
            ramp_down_start_time="string",
            ramp_down_stop_hosts_when="string",
            ramp_down_wait_time_minutes=0,
            days_of_weeks=["string"],
            ramp_up_load_balancing_algorithm="string",
            ramp_up_minimum_hosts_percent=0,
            ramp_up_capacity_threshold_percent=0,
        )],
        time_zone="string",
        description="string",
        exclusion_tag="string",
        friendly_name="string",
        host_pools=[azure.desktopvirtualization.ScalingPlanHostPoolArgs(
            hostpool_id="string",
            scaling_plan_enabled=False,
        )],
        location="string",
        name="string",
        tags={
            "string": "string",
        })
    
    const scalingPlanResource = new azure.desktopvirtualization.ScalingPlan("scalingPlanResource", {
        resourceGroupName: "string",
        schedules: [{
            rampDownLoadBalancingAlgorithm: "string",
            offPeakLoadBalancingAlgorithm: "string",
            rampDownMinimumHostsPercent: 0,
            rampDownNotificationMessage: "string",
            peakLoadBalancingAlgorithm: "string",
            peakStartTime: "string",
            rampDownCapacityThresholdPercent: 0,
            rampDownForceLogoffUsers: false,
            rampUpStartTime: "string",
            name: "string",
            offPeakStartTime: "string",
            rampDownStartTime: "string",
            rampDownStopHostsWhen: "string",
            rampDownWaitTimeMinutes: 0,
            daysOfWeeks: ["string"],
            rampUpLoadBalancingAlgorithm: "string",
            rampUpMinimumHostsPercent: 0,
            rampUpCapacityThresholdPercent: 0,
        }],
        timeZone: "string",
        description: "string",
        exclusionTag: "string",
        friendlyName: "string",
        hostPools: [{
            hostpoolId: "string",
            scalingPlanEnabled: false,
        }],
        location: "string",
        name: "string",
        tags: {
            string: "string",
        },
    });
    
    type: azure:desktopvirtualization:ScalingPlan
    properties:
        description: string
        exclusionTag: string
        friendlyName: string
        hostPools:
            - hostpoolId: string
              scalingPlanEnabled: false
        location: string
        name: string
        resourceGroupName: string
        schedules:
            - daysOfWeeks:
                - string
              name: string
              offPeakLoadBalancingAlgorithm: string
              offPeakStartTime: string
              peakLoadBalancingAlgorithm: string
              peakStartTime: string
              rampDownCapacityThresholdPercent: 0
              rampDownForceLogoffUsers: false
              rampDownLoadBalancingAlgorithm: string
              rampDownMinimumHostsPercent: 0
              rampDownNotificationMessage: string
              rampDownStartTime: string
              rampDownStopHostsWhen: string
              rampDownWaitTimeMinutes: 0
              rampUpCapacityThresholdPercent: 0
              rampUpLoadBalancingAlgorithm: string
              rampUpMinimumHostsPercent: 0
              rampUpStartTime: string
        tags:
            string: string
        timeZone: string
    

    ScalingPlan Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    The ScalingPlan resource accepts the following input properties:

    ResourceGroupName string
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    Schedules List<ScalingPlanSchedule>
    One or more schedule blocks as defined below.
    TimeZone string
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    Description string
    A description of the Scaling Plan.
    ExclusionTag string
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    FriendlyName string
    Friendly name of the Scaling Plan.
    HostPools List<ScalingPlanHostPool>
    One or more host_pool blocks as defined below.
    Location string
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    Name string
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    Tags Dictionary<string, string>
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    ResourceGroupName string
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    Schedules []ScalingPlanScheduleArgs
    One or more schedule blocks as defined below.
    TimeZone string
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    Description string
    A description of the Scaling Plan.
    ExclusionTag string
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    FriendlyName string
    Friendly name of the Scaling Plan.
    HostPools []ScalingPlanHostPoolArgs
    One or more host_pool blocks as defined below.
    Location string
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    Name string
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    Tags map[string]string
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    resourceGroupName String
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    schedules List<ScalingPlanSchedule>
    One or more schedule blocks as defined below.
    timeZone String
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    description String
    A description of the Scaling Plan.
    exclusionTag String
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    friendlyName String
    Friendly name of the Scaling Plan.
    hostPools List<ScalingPlanHostPool>
    One or more host_pool blocks as defined below.
    location String
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    name String
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    tags Map<String,String>
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    resourceGroupName string
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    schedules ScalingPlanSchedule[]
    One or more schedule blocks as defined below.
    timeZone string
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    description string
    A description of the Scaling Plan.
    exclusionTag string
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    friendlyName string
    Friendly name of the Scaling Plan.
    hostPools ScalingPlanHostPool[]
    One or more host_pool blocks as defined below.
    location string
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    name string
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    tags {[key: string]: string}
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    resource_group_name str
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    schedules Sequence[ScalingPlanScheduleArgs]
    One or more schedule blocks as defined below.
    time_zone str
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    description str
    A description of the Scaling Plan.
    exclusion_tag str
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    friendly_name str
    Friendly name of the Scaling Plan.
    host_pools Sequence[ScalingPlanHostPoolArgs]
    One or more host_pool blocks as defined below.
    location str
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    name str
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    tags Mapping[str, str]
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    resourceGroupName String
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    schedules List<Property Map>
    One or more schedule blocks as defined below.
    timeZone String
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    description String
    A description of the Scaling Plan.
    exclusionTag String
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    friendlyName String
    Friendly name of the Scaling Plan.
    hostPools List<Property Map>
    One or more host_pool blocks as defined below.
    location String
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    name String
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    tags Map<String>
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .

    Outputs

    All input properties are implicitly available as output properties. Additionally, the ScalingPlan resource produces the following output properties:

    Id string
    The provider-assigned unique ID for this managed resource.
    Id string
    The provider-assigned unique ID for this managed resource.
    id String
    The provider-assigned unique ID for this managed resource.
    id string
    The provider-assigned unique ID for this managed resource.
    id str
    The provider-assigned unique ID for this managed resource.
    id String
    The provider-assigned unique ID for this managed resource.

    Look up Existing ScalingPlan Resource

    Get an existing ScalingPlan resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: ScalingPlanState, opts?: CustomResourceOptions): ScalingPlan
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            description: Optional[str] = None,
            exclusion_tag: Optional[str] = None,
            friendly_name: Optional[str] = None,
            host_pools: Optional[Sequence[ScalingPlanHostPoolArgs]] = None,
            location: Optional[str] = None,
            name: Optional[str] = None,
            resource_group_name: Optional[str] = None,
            schedules: Optional[Sequence[ScalingPlanScheduleArgs]] = None,
            tags: Optional[Mapping[str, str]] = None,
            time_zone: Optional[str] = None) -> ScalingPlan
    func GetScalingPlan(ctx *Context, name string, id IDInput, state *ScalingPlanState, opts ...ResourceOption) (*ScalingPlan, error)
    public static ScalingPlan Get(string name, Input<string> id, ScalingPlanState? state, CustomResourceOptions? opts = null)
    public static ScalingPlan get(String name, Output<String> id, ScalingPlanState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    Description string
    A description of the Scaling Plan.
    ExclusionTag string
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    FriendlyName string
    Friendly name of the Scaling Plan.
    HostPools List<ScalingPlanHostPool>
    One or more host_pool blocks as defined below.
    Location string
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    Name string
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    ResourceGroupName string
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    Schedules List<ScalingPlanSchedule>
    One or more schedule blocks as defined below.
    Tags Dictionary<string, string>
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    TimeZone string
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    Description string
    A description of the Scaling Plan.
    ExclusionTag string
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    FriendlyName string
    Friendly name of the Scaling Plan.
    HostPools []ScalingPlanHostPoolArgs
    One or more host_pool blocks as defined below.
    Location string
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    Name string
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    ResourceGroupName string
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    Schedules []ScalingPlanScheduleArgs
    One or more schedule blocks as defined below.
    Tags map[string]string
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    TimeZone string
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    description String
    A description of the Scaling Plan.
    exclusionTag String
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    friendlyName String
    Friendly name of the Scaling Plan.
    hostPools List<ScalingPlanHostPool>
    One or more host_pool blocks as defined below.
    location String
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    name String
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    resourceGroupName String
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    schedules List<ScalingPlanSchedule>
    One or more schedule blocks as defined below.
    tags Map<String,String>
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    timeZone String
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    description string
    A description of the Scaling Plan.
    exclusionTag string
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    friendlyName string
    Friendly name of the Scaling Plan.
    hostPools ScalingPlanHostPool[]
    One or more host_pool blocks as defined below.
    location string
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    name string
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    resourceGroupName string
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    schedules ScalingPlanSchedule[]
    One or more schedule blocks as defined below.
    tags {[key: string]: string}
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    timeZone string
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    description str
    A description of the Scaling Plan.
    exclusion_tag str
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    friendly_name str
    Friendly name of the Scaling Plan.
    host_pools Sequence[ScalingPlanHostPoolArgs]
    One or more host_pool blocks as defined below.
    location str
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    name str
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    resource_group_name str
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    schedules Sequence[ScalingPlanScheduleArgs]
    One or more schedule blocks as defined below.
    tags Mapping[str, str]
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    time_zone str
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.
    description String
    A description of the Scaling Plan.
    exclusionTag String
    The name of the tag associated with the VMs you want to exclude from autoscaling.
    friendlyName String
    Friendly name of the Scaling Plan.
    hostPools List<Property Map>
    One or more host_pool blocks as defined below.
    location String
    The Azure Region where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    name String
    The name which should be used for this Virtual Desktop Scaling Plan . Changing this forces a new Virtual Desktop Scaling Plan to be created.
    resourceGroupName String
    The name of the Resource Group where the Virtual Desktop Scaling Plan should exist. Changing this forces a new Virtual Desktop Scaling Plan to be created.
    schedules List<Property Map>
    One or more schedule blocks as defined below.
    tags Map<String>
    A mapping of tags which should be assigned to the Virtual Desktop Scaling Plan .
    timeZone String
    Specifies the Time Zone which should be used by the Scaling Plan for time based events, the possible values are defined here.

    Supporting Types

    ScalingPlanHostPool, ScalingPlanHostPoolArgs

    HostpoolId string
    The ID of the HostPool to assign the Scaling Plan to.
    ScalingPlanEnabled bool
    Specifies if the scaling plan is enabled or disabled for the HostPool.
    HostpoolId string
    The ID of the HostPool to assign the Scaling Plan to.
    ScalingPlanEnabled bool
    Specifies if the scaling plan is enabled or disabled for the HostPool.
    hostpoolId String
    The ID of the HostPool to assign the Scaling Plan to.
    scalingPlanEnabled Boolean
    Specifies if the scaling plan is enabled or disabled for the HostPool.
    hostpoolId string
    The ID of the HostPool to assign the Scaling Plan to.
    scalingPlanEnabled boolean
    Specifies if the scaling plan is enabled or disabled for the HostPool.
    hostpool_id str
    The ID of the HostPool to assign the Scaling Plan to.
    scaling_plan_enabled bool
    Specifies if the scaling plan is enabled or disabled for the HostPool.
    hostpoolId String
    The ID of the HostPool to assign the Scaling Plan to.
    scalingPlanEnabled Boolean
    Specifies if the scaling plan is enabled or disabled for the HostPool.

    ScalingPlanSchedule, ScalingPlanScheduleArgs

    DaysOfWeeks List<string>
    A list of Days of the Week on which this schedule will be used. Possible values are Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday
    Name string
    The name of the schedule.
    OffPeakLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during Off-Peak Hours. Possible values are DepthFirst and BreadthFirst.
    OffPeakStartTime string
    The time at which Off-Peak scaling will begin. This is also the end-time for the Ramp-Down period. The time must be specified in "HH:MM" format.
    PeakLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during Peak Hours. Possible values are DepthFirst and BreadthFirst.
    PeakStartTime string
    The time at which Peak scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    RampDownCapacityThresholdPercent int
    This is the value in percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-down and off-peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    RampDownForceLogoffUsers bool
    Whether users will be forced to log-off session hosts once the ramp_down_wait_time_minutes value has been exceeded during the Ramp-Down period. Possible
    RampDownLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during the Ramp-Down period. Possible values are DepthFirst and BreadthFirst.
    RampDownMinimumHostsPercent int
    The minimum percentage of session host virtual machines that you would like to get to for ramp-down and off-peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    RampDownNotificationMessage string
    The notification message to send to users during Ramp-Down period when they are required to log-off.
    RampDownStartTime string
    The time at which Ramp-Down scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    RampDownStopHostsWhen string
    Controls Session Host shutdown behaviour during Ramp-Down period. Session Hosts can either be shutdown when all sessions on the Session Host have ended, or when there are no Active sessions left on the Session Host. Possible values are ZeroSessions and ZeroActiveSessions.
    RampDownWaitTimeMinutes int
    The number of minutes during Ramp-Down period that autoscale will wait after setting the session host VMs to drain mode, notifying any currently signed in users to save their work before forcing the users to logoff. Once all user sessions on the session host VM have been logged off, Autoscale will shut down the VM.
    RampUpLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during the Ramp-Up period. Possible values are DepthFirst and BreadthFirst.
    RampUpStartTime string
    The time at which Ramp-Up scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    RampUpCapacityThresholdPercent int
    This is the value of percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-up and peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    RampUpMinimumHostsPercent int
    Specifies the minimum percentage of session host virtual machines to start during ramp-up for peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    DaysOfWeeks []string
    A list of Days of the Week on which this schedule will be used. Possible values are Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday
    Name string
    The name of the schedule.
    OffPeakLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during Off-Peak Hours. Possible values are DepthFirst and BreadthFirst.
    OffPeakStartTime string
    The time at which Off-Peak scaling will begin. This is also the end-time for the Ramp-Down period. The time must be specified in "HH:MM" format.
    PeakLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during Peak Hours. Possible values are DepthFirst and BreadthFirst.
    PeakStartTime string
    The time at which Peak scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    RampDownCapacityThresholdPercent int
    This is the value in percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-down and off-peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    RampDownForceLogoffUsers bool
    Whether users will be forced to log-off session hosts once the ramp_down_wait_time_minutes value has been exceeded during the Ramp-Down period. Possible
    RampDownLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during the Ramp-Down period. Possible values are DepthFirst and BreadthFirst.
    RampDownMinimumHostsPercent int
    The minimum percentage of session host virtual machines that you would like to get to for ramp-down and off-peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    RampDownNotificationMessage string
    The notification message to send to users during Ramp-Down period when they are required to log-off.
    RampDownStartTime string
    The time at which Ramp-Down scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    RampDownStopHostsWhen string
    Controls Session Host shutdown behaviour during Ramp-Down period. Session Hosts can either be shutdown when all sessions on the Session Host have ended, or when there are no Active sessions left on the Session Host. Possible values are ZeroSessions and ZeroActiveSessions.
    RampDownWaitTimeMinutes int
    The number of minutes during Ramp-Down period that autoscale will wait after setting the session host VMs to drain mode, notifying any currently signed in users to save their work before forcing the users to logoff. Once all user sessions on the session host VM have been logged off, Autoscale will shut down the VM.
    RampUpLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during the Ramp-Up period. Possible values are DepthFirst and BreadthFirst.
    RampUpStartTime string
    The time at which Ramp-Up scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    RampUpCapacityThresholdPercent int
    This is the value of percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-up and peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    RampUpMinimumHostsPercent int
    Specifies the minimum percentage of session host virtual machines to start during ramp-up for peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    daysOfWeeks List<String>
    A list of Days of the Week on which this schedule will be used. Possible values are Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday
    name String
    The name of the schedule.
    offPeakLoadBalancingAlgorithm String
    The load Balancing Algorithm to use during Off-Peak Hours. Possible values are DepthFirst and BreadthFirst.
    offPeakStartTime String
    The time at which Off-Peak scaling will begin. This is also the end-time for the Ramp-Down period. The time must be specified in "HH:MM" format.
    peakLoadBalancingAlgorithm String
    The load Balancing Algorithm to use during Peak Hours. Possible values are DepthFirst and BreadthFirst.
    peakStartTime String
    The time at which Peak scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    rampDownCapacityThresholdPercent Integer
    This is the value in percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-down and off-peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    rampDownForceLogoffUsers Boolean
    Whether users will be forced to log-off session hosts once the ramp_down_wait_time_minutes value has been exceeded during the Ramp-Down period. Possible
    rampDownLoadBalancingAlgorithm String
    The load Balancing Algorithm to use during the Ramp-Down period. Possible values are DepthFirst and BreadthFirst.
    rampDownMinimumHostsPercent Integer
    The minimum percentage of session host virtual machines that you would like to get to for ramp-down and off-peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    rampDownNotificationMessage String
    The notification message to send to users during Ramp-Down period when they are required to log-off.
    rampDownStartTime String
    The time at which Ramp-Down scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    rampDownStopHostsWhen String
    Controls Session Host shutdown behaviour during Ramp-Down period. Session Hosts can either be shutdown when all sessions on the Session Host have ended, or when there are no Active sessions left on the Session Host. Possible values are ZeroSessions and ZeroActiveSessions.
    rampDownWaitTimeMinutes Integer
    The number of minutes during Ramp-Down period that autoscale will wait after setting the session host VMs to drain mode, notifying any currently signed in users to save their work before forcing the users to logoff. Once all user sessions on the session host VM have been logged off, Autoscale will shut down the VM.
    rampUpLoadBalancingAlgorithm String
    The load Balancing Algorithm to use during the Ramp-Up period. Possible values are DepthFirst and BreadthFirst.
    rampUpStartTime String
    The time at which Ramp-Up scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    rampUpCapacityThresholdPercent Integer
    This is the value of percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-up and peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    rampUpMinimumHostsPercent Integer
    Specifies the minimum percentage of session host virtual machines to start during ramp-up for peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    daysOfWeeks string[]
    A list of Days of the Week on which this schedule will be used. Possible values are Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday
    name string
    The name of the schedule.
    offPeakLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during Off-Peak Hours. Possible values are DepthFirst and BreadthFirst.
    offPeakStartTime string
    The time at which Off-Peak scaling will begin. This is also the end-time for the Ramp-Down period. The time must be specified in "HH:MM" format.
    peakLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during Peak Hours. Possible values are DepthFirst and BreadthFirst.
    peakStartTime string
    The time at which Peak scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    rampDownCapacityThresholdPercent number
    This is the value in percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-down and off-peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    rampDownForceLogoffUsers boolean
    Whether users will be forced to log-off session hosts once the ramp_down_wait_time_minutes value has been exceeded during the Ramp-Down period. Possible
    rampDownLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during the Ramp-Down period. Possible values are DepthFirst and BreadthFirst.
    rampDownMinimumHostsPercent number
    The minimum percentage of session host virtual machines that you would like to get to for ramp-down and off-peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    rampDownNotificationMessage string
    The notification message to send to users during Ramp-Down period when they are required to log-off.
    rampDownStartTime string
    The time at which Ramp-Down scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    rampDownStopHostsWhen string
    Controls Session Host shutdown behaviour during Ramp-Down period. Session Hosts can either be shutdown when all sessions on the Session Host have ended, or when there are no Active sessions left on the Session Host. Possible values are ZeroSessions and ZeroActiveSessions.
    rampDownWaitTimeMinutes number
    The number of minutes during Ramp-Down period that autoscale will wait after setting the session host VMs to drain mode, notifying any currently signed in users to save their work before forcing the users to logoff. Once all user sessions on the session host VM have been logged off, Autoscale will shut down the VM.
    rampUpLoadBalancingAlgorithm string
    The load Balancing Algorithm to use during the Ramp-Up period. Possible values are DepthFirst and BreadthFirst.
    rampUpStartTime string
    The time at which Ramp-Up scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    rampUpCapacityThresholdPercent number
    This is the value of percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-up and peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    rampUpMinimumHostsPercent number
    Specifies the minimum percentage of session host virtual machines to start during ramp-up for peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    days_of_weeks Sequence[str]
    A list of Days of the Week on which this schedule will be used. Possible values are Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday
    name str
    The name of the schedule.
    off_peak_load_balancing_algorithm str
    The load Balancing Algorithm to use during Off-Peak Hours. Possible values are DepthFirst and BreadthFirst.
    off_peak_start_time str
    The time at which Off-Peak scaling will begin. This is also the end-time for the Ramp-Down period. The time must be specified in "HH:MM" format.
    peak_load_balancing_algorithm str
    The load Balancing Algorithm to use during Peak Hours. Possible values are DepthFirst and BreadthFirst.
    peak_start_time str
    The time at which Peak scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    ramp_down_capacity_threshold_percent int
    This is the value in percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-down and off-peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    ramp_down_force_logoff_users bool
    Whether users will be forced to log-off session hosts once the ramp_down_wait_time_minutes value has been exceeded during the Ramp-Down period. Possible
    ramp_down_load_balancing_algorithm str
    The load Balancing Algorithm to use during the Ramp-Down period. Possible values are DepthFirst and BreadthFirst.
    ramp_down_minimum_hosts_percent int
    The minimum percentage of session host virtual machines that you would like to get to for ramp-down and off-peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    ramp_down_notification_message str
    The notification message to send to users during Ramp-Down period when they are required to log-off.
    ramp_down_start_time str
    The time at which Ramp-Down scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    ramp_down_stop_hosts_when str
    Controls Session Host shutdown behaviour during Ramp-Down period. Session Hosts can either be shutdown when all sessions on the Session Host have ended, or when there are no Active sessions left on the Session Host. Possible values are ZeroSessions and ZeroActiveSessions.
    ramp_down_wait_time_minutes int
    The number of minutes during Ramp-Down period that autoscale will wait after setting the session host VMs to drain mode, notifying any currently signed in users to save their work before forcing the users to logoff. Once all user sessions on the session host VM have been logged off, Autoscale will shut down the VM.
    ramp_up_load_balancing_algorithm str
    The load Balancing Algorithm to use during the Ramp-Up period. Possible values are DepthFirst and BreadthFirst.
    ramp_up_start_time str
    The time at which Ramp-Up scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    ramp_up_capacity_threshold_percent int
    This is the value of percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-up and peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    ramp_up_minimum_hosts_percent int
    Specifies the minimum percentage of session host virtual machines to start during ramp-up for peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    daysOfWeeks List<String>
    A list of Days of the Week on which this schedule will be used. Possible values are Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday
    name String
    The name of the schedule.
    offPeakLoadBalancingAlgorithm String
    The load Balancing Algorithm to use during Off-Peak Hours. Possible values are DepthFirst and BreadthFirst.
    offPeakStartTime String
    The time at which Off-Peak scaling will begin. This is also the end-time for the Ramp-Down period. The time must be specified in "HH:MM" format.
    peakLoadBalancingAlgorithm String
    The load Balancing Algorithm to use during Peak Hours. Possible values are DepthFirst and BreadthFirst.
    peakStartTime String
    The time at which Peak scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    rampDownCapacityThresholdPercent Number
    This is the value in percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-down and off-peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    rampDownForceLogoffUsers Boolean
    Whether users will be forced to log-off session hosts once the ramp_down_wait_time_minutes value has been exceeded during the Ramp-Down period. Possible
    rampDownLoadBalancingAlgorithm String
    The load Balancing Algorithm to use during the Ramp-Down period. Possible values are DepthFirst and BreadthFirst.
    rampDownMinimumHostsPercent Number
    The minimum percentage of session host virtual machines that you would like to get to for ramp-down and off-peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.
    rampDownNotificationMessage String
    The notification message to send to users during Ramp-Down period when they are required to log-off.
    rampDownStartTime String
    The time at which Ramp-Down scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    rampDownStopHostsWhen String
    Controls Session Host shutdown behaviour during Ramp-Down period. Session Hosts can either be shutdown when all sessions on the Session Host have ended, or when there are no Active sessions left on the Session Host. Possible values are ZeroSessions and ZeroActiveSessions.
    rampDownWaitTimeMinutes Number
    The number of minutes during Ramp-Down period that autoscale will wait after setting the session host VMs to drain mode, notifying any currently signed in users to save their work before forcing the users to logoff. Once all user sessions on the session host VM have been logged off, Autoscale will shut down the VM.
    rampUpLoadBalancingAlgorithm String
    The load Balancing Algorithm to use during the Ramp-Up period. Possible values are DepthFirst and BreadthFirst.
    rampUpStartTime String
    The time at which Ramp-Up scaling will begin. This is also the end-time for the Ramp-Up period. The time must be specified in "HH:MM" format.
    rampUpCapacityThresholdPercent Number
    This is the value of percentage of used host pool capacity that will be considered to evaluate whether to turn on/off virtual machines during the ramp-up and peak hours. For example, if capacity threshold is specified as 60% and your total host pool capacity is 100 sessions, autoscale will turn on additional session hosts once the host pool exceeds a load of 60 sessions.
    rampUpMinimumHostsPercent Number
    Specifies the minimum percentage of session host virtual machines to start during ramp-up for peak hours. For example, if Minimum percentage of hosts is specified as 10% and total number of session hosts in your host pool is 10, autoscale will ensure a minimum of 1 session host is available to take user connections.

    Import

    Virtual Desktop Scaling Plans can be imported using the resource id, e.g.

    $ pulumi import azure:desktopvirtualization/scalingPlan:ScalingPlan example /subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/scalingPlans/plan1
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    Azure Classic pulumi/pulumi-azure
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the azurerm Terraform Provider.
    azure logo

    We recommend using Azure Native.

    Azure Classic v5.72.0 published on Monday, Apr 15, 2024 by Pulumi