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

com.pulumi.azurenative.desktopvirtualization.ScalingPlanArgs Maven / Gradle / Ivy

There is a newer version: 2.82.0
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azurenative.desktopvirtualization;

import com.pulumi.azurenative.desktopvirtualization.enums.ScalingHostPoolType;
import com.pulumi.azurenative.desktopvirtualization.inputs.ResourceModelWithAllowedPropertySetIdentityArgs;
import com.pulumi.azurenative.desktopvirtualization.inputs.ResourceModelWithAllowedPropertySetPlanArgs;
import com.pulumi.azurenative.desktopvirtualization.inputs.ResourceModelWithAllowedPropertySetSkuArgs;
import com.pulumi.azurenative.desktopvirtualization.inputs.ScalingHostPoolReferenceArgs;
import com.pulumi.azurenative.desktopvirtualization.inputs.ScalingScheduleArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.core.internal.Codegen;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class ScalingPlanArgs extends com.pulumi.resources.ResourceArgs {

    public static final ScalingPlanArgs Empty = new ScalingPlanArgs();

    /**
     * Description of scaling plan.
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return Description of scaling plan.
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * Exclusion tag for scaling plan.
     * 
     */
    @Import(name="exclusionTag")
    private @Nullable Output exclusionTag;

    /**
     * @return Exclusion tag for scaling plan.
     * 
     */
    public Optional> exclusionTag() {
        return Optional.ofNullable(this.exclusionTag);
    }

    /**
     * User friendly name of scaling plan.
     * 
     */
    @Import(name="friendlyName")
    private @Nullable Output friendlyName;

    /**
     * @return User friendly name of scaling plan.
     * 
     */
    public Optional> friendlyName() {
        return Optional.ofNullable(this.friendlyName);
    }

    /**
     * List of ScalingHostPoolReference definitions.
     * 
     */
    @Import(name="hostPoolReferences")
    private @Nullable Output> hostPoolReferences;

    /**
     * @return List of ScalingHostPoolReference definitions.
     * 
     */
    public Optional>> hostPoolReferences() {
        return Optional.ofNullable(this.hostPoolReferences);
    }

    /**
     * HostPool type for desktop.
     * 
     */
    @Import(name="hostPoolType")
    private @Nullable Output> hostPoolType;

    /**
     * @return HostPool type for desktop.
     * 
     */
    public Optional>> hostPoolType() {
        return Optional.ofNullable(this.hostPoolType);
    }

    @Import(name="identity")
    private @Nullable Output identity;

    public Optional> identity() {
        return Optional.ofNullable(this.identity);
    }

    /**
     * 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.
     * 
     */
    @Import(name="kind")
    private @Nullable Output kind;

    /**
     * @return 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.
     * 
     */
    public Optional> kind() {
        return Optional.ofNullable(this.kind);
    }

    /**
     * The geo-location where the resource lives
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return The geo-location where the resource lives
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * 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.
     * 
     */
    @Import(name="managedBy")
    private @Nullable Output managedBy;

    /**
     * @return 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.
     * 
     */
    public Optional> managedBy() {
        return Optional.ofNullable(this.managedBy);
    }

    @Import(name="plan")
    private @Nullable Output plan;

    public Optional> plan() {
        return Optional.ofNullable(this.plan);
    }

    /**
     * The name of the resource group. The name is case insensitive.
     * 
     */
    @Import(name="resourceGroupName", required=true)
    private Output resourceGroupName;

    /**
     * @return The name of the resource group. The name is case insensitive.
     * 
     */
    public Output resourceGroupName() {
        return this.resourceGroupName;
    }

    /**
     * The name of the scaling plan.
     * 
     */
    @Import(name="scalingPlanName")
    private @Nullable Output scalingPlanName;

    /**
     * @return The name of the scaling plan.
     * 
     */
    public Optional> scalingPlanName() {
        return Optional.ofNullable(this.scalingPlanName);
    }

    /**
     * List of ScalingPlanPooledSchedule definitions.
     * 
     */
    @Import(name="schedules")
    private @Nullable Output> schedules;

    /**
     * @return List of ScalingPlanPooledSchedule definitions.
     * 
     */
    public Optional>> schedules() {
        return Optional.ofNullable(this.schedules);
    }

    @Import(name="sku")
    private @Nullable Output sku;

    public Optional> sku() {
        return Optional.ofNullable(this.sku);
    }

    /**
     * Resource tags.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return Resource tags.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * Timezone of the scaling plan.
     * 
     */
    @Import(name="timeZone", required=true)
    private Output timeZone;

    /**
     * @return Timezone of the scaling plan.
     * 
     */
    public Output timeZone() {
        return this.timeZone;
    }

    private ScalingPlanArgs() {}

    private ScalingPlanArgs(ScalingPlanArgs $) {
        this.description = $.description;
        this.exclusionTag = $.exclusionTag;
        this.friendlyName = $.friendlyName;
        this.hostPoolReferences = $.hostPoolReferences;
        this.hostPoolType = $.hostPoolType;
        this.identity = $.identity;
        this.kind = $.kind;
        this.location = $.location;
        this.managedBy = $.managedBy;
        this.plan = $.plan;
        this.resourceGroupName = $.resourceGroupName;
        this.scalingPlanName = $.scalingPlanName;
        this.schedules = $.schedules;
        this.sku = $.sku;
        this.tags = $.tags;
        this.timeZone = $.timeZone;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(ScalingPlanArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private ScalingPlanArgs $;

        public Builder() {
            $ = new ScalingPlanArgs();
        }

        public Builder(ScalingPlanArgs defaults) {
            $ = new ScalingPlanArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param description Description of scaling plan.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description Description of scaling plan.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param exclusionTag Exclusion tag for scaling plan.
         * 
         * @return builder
         * 
         */
        public Builder exclusionTag(@Nullable Output exclusionTag) {
            $.exclusionTag = exclusionTag;
            return this;
        }

        /**
         * @param exclusionTag Exclusion tag for scaling plan.
         * 
         * @return builder
         * 
         */
        public Builder exclusionTag(String exclusionTag) {
            return exclusionTag(Output.of(exclusionTag));
        }

        /**
         * @param friendlyName User friendly name of scaling plan.
         * 
         * @return builder
         * 
         */
        public Builder friendlyName(@Nullable Output friendlyName) {
            $.friendlyName = friendlyName;
            return this;
        }

        /**
         * @param friendlyName User friendly name of scaling plan.
         * 
         * @return builder
         * 
         */
        public Builder friendlyName(String friendlyName) {
            return friendlyName(Output.of(friendlyName));
        }

        /**
         * @param hostPoolReferences List of ScalingHostPoolReference definitions.
         * 
         * @return builder
         * 
         */
        public Builder hostPoolReferences(@Nullable Output> hostPoolReferences) {
            $.hostPoolReferences = hostPoolReferences;
            return this;
        }

        /**
         * @param hostPoolReferences List of ScalingHostPoolReference definitions.
         * 
         * @return builder
         * 
         */
        public Builder hostPoolReferences(List hostPoolReferences) {
            return hostPoolReferences(Output.of(hostPoolReferences));
        }

        /**
         * @param hostPoolReferences List of ScalingHostPoolReference definitions.
         * 
         * @return builder
         * 
         */
        public Builder hostPoolReferences(ScalingHostPoolReferenceArgs... hostPoolReferences) {
            return hostPoolReferences(List.of(hostPoolReferences));
        }

        /**
         * @param hostPoolType HostPool type for desktop.
         * 
         * @return builder
         * 
         */
        public Builder hostPoolType(@Nullable Output> hostPoolType) {
            $.hostPoolType = hostPoolType;
            return this;
        }

        /**
         * @param hostPoolType HostPool type for desktop.
         * 
         * @return builder
         * 
         */
        public Builder hostPoolType(Either hostPoolType) {
            return hostPoolType(Output.of(hostPoolType));
        }

        /**
         * @param hostPoolType HostPool type for desktop.
         * 
         * @return builder
         * 
         */
        public Builder hostPoolType(String hostPoolType) {
            return hostPoolType(Either.ofLeft(hostPoolType));
        }

        /**
         * @param hostPoolType HostPool type for desktop.
         * 
         * @return builder
         * 
         */
        public Builder hostPoolType(ScalingHostPoolType hostPoolType) {
            return hostPoolType(Either.ofRight(hostPoolType));
        }

        public Builder identity(@Nullable Output identity) {
            $.identity = identity;
            return this;
        }

        public Builder identity(ResourceModelWithAllowedPropertySetIdentityArgs identity) {
            return identity(Output.of(identity));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder kind(@Nullable Output kind) {
            $.kind = kind;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder kind(String kind) {
            return kind(Output.of(kind));
        }

        /**
         * @param location The geo-location where the resource lives
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location The geo-location where the resource lives
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder managedBy(@Nullable Output managedBy) {
            $.managedBy = managedBy;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder managedBy(String managedBy) {
            return managedBy(Output.of(managedBy));
        }

        public Builder plan(@Nullable Output plan) {
            $.plan = plan;
            return this;
        }

        public Builder plan(ResourceModelWithAllowedPropertySetPlanArgs plan) {
            return plan(Output.of(plan));
        }

        /**
         * @param resourceGroupName The name of the resource group. The name is case insensitive.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(Output resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the resource group. The name is case insensitive.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param scalingPlanName The name of the scaling plan.
         * 
         * @return builder
         * 
         */
        public Builder scalingPlanName(@Nullable Output scalingPlanName) {
            $.scalingPlanName = scalingPlanName;
            return this;
        }

        /**
         * @param scalingPlanName The name of the scaling plan.
         * 
         * @return builder
         * 
         */
        public Builder scalingPlanName(String scalingPlanName) {
            return scalingPlanName(Output.of(scalingPlanName));
        }

        /**
         * @param schedules List of ScalingPlanPooledSchedule definitions.
         * 
         * @return builder
         * 
         */
        public Builder schedules(@Nullable Output> schedules) {
            $.schedules = schedules;
            return this;
        }

        /**
         * @param schedules List of ScalingPlanPooledSchedule definitions.
         * 
         * @return builder
         * 
         */
        public Builder schedules(List schedules) {
            return schedules(Output.of(schedules));
        }

        /**
         * @param schedules List of ScalingPlanPooledSchedule definitions.
         * 
         * @return builder
         * 
         */
        public Builder schedules(ScalingScheduleArgs... schedules) {
            return schedules(List.of(schedules));
        }

        public Builder sku(@Nullable Output sku) {
            $.sku = sku;
            return this;
        }

        public Builder sku(ResourceModelWithAllowedPropertySetSkuArgs sku) {
            return sku(Output.of(sku));
        }

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param timeZone Timezone of the scaling plan.
         * 
         * @return builder
         * 
         */
        public Builder timeZone(Output timeZone) {
            $.timeZone = timeZone;
            return this;
        }

        /**
         * @param timeZone Timezone of the scaling plan.
         * 
         * @return builder
         * 
         */
        public Builder timeZone(String timeZone) {
            return timeZone(Output.of(timeZone));
        }

        public ScalingPlanArgs build() {
            $.hostPoolType = Codegen.stringProp("hostPoolType").left(ScalingHostPoolType.class).output().arg($.hostPoolType).def("Pooled").getNullable();
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("ScalingPlanArgs", "resourceGroupName");
            }
            if ($.timeZone == null) {
                throw new MissingRequiredPropertyException("ScalingPlanArgs", "timeZone");
            }
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy