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

com.pulumi.azurenative.consumption.BudgetArgs Maven / Gradle / Ivy

There is a newer version: 2.78.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.consumption;

import com.pulumi.azurenative.consumption.enums.CategoryType;
import com.pulumi.azurenative.consumption.enums.TimeGrainType;
import com.pulumi.azurenative.consumption.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.consumption.inputs.BudgetTimePeriodArgs;
import com.pulumi.azurenative.consumption.inputs.NotificationArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Double;
import java.lang.String;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final BudgetArgs Empty = new BudgetArgs();

    /**
     * The total amount of cost to track with the budget
     * 
     */
    @Import(name="amount", required=true)
    private Output amount;

    /**
     * @return The total amount of cost to track with the budget
     * 
     */
    public Output amount() {
        return this.amount;
    }

    /**
     * Budget Name.
     * 
     */
    @Import(name="budgetName")
    private @Nullable Output budgetName;

    /**
     * @return Budget Name.
     * 
     */
    public Optional> budgetName() {
        return Optional.ofNullable(this.budgetName);
    }

    /**
     * The category of the budget, whether the budget tracks cost or usage.
     * 
     */
    @Import(name="category", required=true)
    private Output> category;

    /**
     * @return The category of the budget, whether the budget tracks cost or usage.
     * 
     */
    public Output> category() {
        return this.category;
    }

    /**
     * eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.
     * 
     */
    @Import(name="eTag")
    private @Nullable Output eTag;

    /**
     * @return eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.
     * 
     */
    public Optional> eTag() {
        return Optional.ofNullable(this.eTag);
    }

    /**
     * May be used to filter budgets by user-specified dimensions and/or tags.
     * 
     */
    @Import(name="filter")
    private @Nullable Output filter;

    /**
     * @return May be used to filter budgets by user-specified dimensions and/or tags.
     * 
     */
    public Optional> filter() {
        return Optional.ofNullable(this.filter);
    }

    /**
     * Dictionary of notifications associated with the budget. Budget can have up to five notifications.
     * 
     */
    @Import(name="notifications")
    private @Nullable Output> notifications;

    /**
     * @return Dictionary of notifications associated with the budget. Budget can have up to five notifications.
     * 
     */
    public Optional>> notifications() {
        return Optional.ofNullable(this.notifications);
    }

    /**
     * The scope associated with budget operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope, '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for billingProfile scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for invoiceSection scope.
     * 
     */
    @Import(name="scope", required=true)
    private Output scope;

    /**
     * @return The scope associated with budget operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope, '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for billingProfile scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for invoiceSection scope.
     * 
     */
    public Output scope() {
        return this.scope;
    }

    /**
     * The time covered by a budget. Tracking of the amount will be reset based on the time grain. BillingMonth, BillingQuarter, and BillingAnnual are only supported by WD customers
     * 
     */
    @Import(name="timeGrain", required=true)
    private Output> timeGrain;

    /**
     * @return The time covered by a budget. Tracking of the amount will be reset based on the time grain. BillingMonth, BillingQuarter, and BillingAnnual are only supported by WD customers
     * 
     */
    public Output> timeGrain() {
        return this.timeGrain;
    }

    /**
     * Has start and end date of the budget. The start date must be first of the month and should be less than the end date. Budget start date must be on or after June 1, 2017. Future start date should not be more than twelve months. Past start date should  be selected within the timegrain period. There are no restrictions on the end date.
     * 
     */
    @Import(name="timePeriod", required=true)
    private Output timePeriod;

    /**
     * @return Has start and end date of the budget. The start date must be first of the month and should be less than the end date. Budget start date must be on or after June 1, 2017. Future start date should not be more than twelve months. Past start date should  be selected within the timegrain period. There are no restrictions on the end date.
     * 
     */
    public Output timePeriod() {
        return this.timePeriod;
    }

    private BudgetArgs() {}

    private BudgetArgs(BudgetArgs $) {
        this.amount = $.amount;
        this.budgetName = $.budgetName;
        this.category = $.category;
        this.eTag = $.eTag;
        this.filter = $.filter;
        this.notifications = $.notifications;
        this.scope = $.scope;
        this.timeGrain = $.timeGrain;
        this.timePeriod = $.timePeriod;
    }

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

    public static final class Builder {
        private BudgetArgs $;

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

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

        /**
         * @param amount The total amount of cost to track with the budget
         * 
         * @return builder
         * 
         */
        public Builder amount(Output amount) {
            $.amount = amount;
            return this;
        }

        /**
         * @param amount The total amount of cost to track with the budget
         * 
         * @return builder
         * 
         */
        public Builder amount(Double amount) {
            return amount(Output.of(amount));
        }

        /**
         * @param budgetName Budget Name.
         * 
         * @return builder
         * 
         */
        public Builder budgetName(@Nullable Output budgetName) {
            $.budgetName = budgetName;
            return this;
        }

        /**
         * @param budgetName Budget Name.
         * 
         * @return builder
         * 
         */
        public Builder budgetName(String budgetName) {
            return budgetName(Output.of(budgetName));
        }

        /**
         * @param category The category of the budget, whether the budget tracks cost or usage.
         * 
         * @return builder
         * 
         */
        public Builder category(Output> category) {
            $.category = category;
            return this;
        }

        /**
         * @param category The category of the budget, whether the budget tracks cost or usage.
         * 
         * @return builder
         * 
         */
        public Builder category(Either category) {
            return category(Output.of(category));
        }

        /**
         * @param category The category of the budget, whether the budget tracks cost or usage.
         * 
         * @return builder
         * 
         */
        public Builder category(String category) {
            return category(Either.ofLeft(category));
        }

        /**
         * @param category The category of the budget, whether the budget tracks cost or usage.
         * 
         * @return builder
         * 
         */
        public Builder category(CategoryType category) {
            return category(Either.ofRight(category));
        }

        /**
         * @param eTag eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.
         * 
         * @return builder
         * 
         */
        public Builder eTag(@Nullable Output eTag) {
            $.eTag = eTag;
            return this;
        }

        /**
         * @param eTag eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not.
         * 
         * @return builder
         * 
         */
        public Builder eTag(String eTag) {
            return eTag(Output.of(eTag));
        }

        /**
         * @param filter May be used to filter budgets by user-specified dimensions and/or tags.
         * 
         * @return builder
         * 
         */
        public Builder filter(@Nullable Output filter) {
            $.filter = filter;
            return this;
        }

        /**
         * @param filter May be used to filter budgets by user-specified dimensions and/or tags.
         * 
         * @return builder
         * 
         */
        public Builder filter(BudgetFilterArgs filter) {
            return filter(Output.of(filter));
        }

        /**
         * @param notifications Dictionary of notifications associated with the budget. Budget can have up to five notifications.
         * 
         * @return builder
         * 
         */
        public Builder notifications(@Nullable Output> notifications) {
            $.notifications = notifications;
            return this;
        }

        /**
         * @param notifications Dictionary of notifications associated with the budget. Budget can have up to five notifications.
         * 
         * @return builder
         * 
         */
        public Builder notifications(Map notifications) {
            return notifications(Output.of(notifications));
        }

        /**
         * @param scope The scope associated with budget operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope, '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for billingProfile scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for invoiceSection scope.
         * 
         * @return builder
         * 
         */
        public Builder scope(Output scope) {
            $.scope = scope;
            return this;
        }

        /**
         * @param scope The scope associated with budget operations. This includes '/subscriptions/{subscriptionId}/' for subscription scope, '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' for EnrollmentAccount scope, '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for billingProfile scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for invoiceSection scope.
         * 
         * @return builder
         * 
         */
        public Builder scope(String scope) {
            return scope(Output.of(scope));
        }

        /**
         * @param timeGrain The time covered by a budget. Tracking of the amount will be reset based on the time grain. BillingMonth, BillingQuarter, and BillingAnnual are only supported by WD customers
         * 
         * @return builder
         * 
         */
        public Builder timeGrain(Output> timeGrain) {
            $.timeGrain = timeGrain;
            return this;
        }

        /**
         * @param timeGrain The time covered by a budget. Tracking of the amount will be reset based on the time grain. BillingMonth, BillingQuarter, and BillingAnnual are only supported by WD customers
         * 
         * @return builder
         * 
         */
        public Builder timeGrain(Either timeGrain) {
            return timeGrain(Output.of(timeGrain));
        }

        /**
         * @param timeGrain The time covered by a budget. Tracking of the amount will be reset based on the time grain. BillingMonth, BillingQuarter, and BillingAnnual are only supported by WD customers
         * 
         * @return builder
         * 
         */
        public Builder timeGrain(String timeGrain) {
            return timeGrain(Either.ofLeft(timeGrain));
        }

        /**
         * @param timeGrain The time covered by a budget. Tracking of the amount will be reset based on the time grain. BillingMonth, BillingQuarter, and BillingAnnual are only supported by WD customers
         * 
         * @return builder
         * 
         */
        public Builder timeGrain(TimeGrainType timeGrain) {
            return timeGrain(Either.ofRight(timeGrain));
        }

        /**
         * @param timePeriod Has start and end date of the budget. The start date must be first of the month and should be less than the end date. Budget start date must be on or after June 1, 2017. Future start date should not be more than twelve months. Past start date should  be selected within the timegrain period. There are no restrictions on the end date.
         * 
         * @return builder
         * 
         */
        public Builder timePeriod(Output timePeriod) {
            $.timePeriod = timePeriod;
            return this;
        }

        /**
         * @param timePeriod Has start and end date of the budget. The start date must be first of the month and should be less than the end date. Budget start date must be on or after June 1, 2017. Future start date should not be more than twelve months. Past start date should  be selected within the timegrain period. There are no restrictions on the end date.
         * 
         * @return builder
         * 
         */
        public Builder timePeriod(BudgetTimePeriodArgs timePeriod) {
            return timePeriod(Output.of(timePeriod));
        }

        public BudgetArgs build() {
            if ($.amount == null) {
                throw new MissingRequiredPropertyException("BudgetArgs", "amount");
            }
            if ($.category == null) {
                throw new MissingRequiredPropertyException("BudgetArgs", "category");
            }
            if ($.scope == null) {
                throw new MissingRequiredPropertyException("BudgetArgs", "scope");
            }
            if ($.timeGrain == null) {
                throw new MissingRequiredPropertyException("BudgetArgs", "timeGrain");
            }
            if ($.timePeriod == null) {
                throw new MissingRequiredPropertyException("BudgetArgs", "timePeriod");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy