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

com.pulumi.azurenative.costmanagement.ViewByScopeArgs 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.costmanagement;

import com.pulumi.azurenative.costmanagement.enums.AccumulatedType;
import com.pulumi.azurenative.costmanagement.enums.ChartType;
import com.pulumi.azurenative.costmanagement.enums.MetricType;
import com.pulumi.azurenative.costmanagement.enums.ReportTimeframeType;
import com.pulumi.azurenative.costmanagement.enums.ReportType;
import com.pulumi.azurenative.costmanagement.inputs.KpiPropertiesArgs;
import com.pulumi.azurenative.costmanagement.inputs.PivotPropertiesArgs;
import com.pulumi.azurenative.costmanagement.inputs.ReportConfigDatasetArgs;
import com.pulumi.azurenative.costmanagement.inputs.ReportConfigTimePeriodArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ViewByScopeArgs Empty = new ViewByScopeArgs();

    /**
     * Show costs accumulated over time.
     * 
     */
    @Import(name="accumulated")
    private @Nullable Output> accumulated;

    /**
     * @return Show costs accumulated over time.
     * 
     */
    public Optional>> accumulated() {
        return Optional.ofNullable(this.accumulated);
    }

    /**
     * Chart type of the main view in Cost Analysis. Required.
     * 
     */
    @Import(name="chart")
    private @Nullable Output> chart;

    /**
     * @return Chart type of the main view in Cost Analysis. Required.
     * 
     */
    public Optional>> chart() {
        return Optional.ofNullable(this.chart);
    }

    /**
     * Has definition for data in this report config.
     * 
     */
    @Import(name="dataSet")
    private @Nullable Output dataSet;

    /**
     * @return Has definition for data in this report config.
     * 
     */
    public Optional> dataSet() {
        return Optional.ofNullable(this.dataSet);
    }

    /**
     * Date range of the current view.
     * 
     */
    @Import(name="dateRange")
    private @Nullable Output dateRange;

    /**
     * @return Date range of the current view.
     * 
     */
    public Optional> dateRange() {
        return Optional.ofNullable(this.dateRange);
    }

    /**
     * User input name of the view. Required.
     * 
     */
    @Import(name="displayName")
    private @Nullable Output displayName;

    /**
     * @return User input name of the view. Required.
     * 
     */
    public Optional> displayName() {
        return Optional.ofNullable(this.displayName);
    }

    /**
     * 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);
    }

    /**
     * If true, report includes monetary commitment.
     * 
     */
    @Import(name="includeMonetaryCommitment")
    private @Nullable Output includeMonetaryCommitment;

    /**
     * @return If true, report includes monetary commitment.
     * 
     */
    public Optional> includeMonetaryCommitment() {
        return Optional.ofNullable(this.includeMonetaryCommitment);
    }

    /**
     * List of KPIs to show in Cost Analysis UI.
     * 
     */
    @Import(name="kpis")
    private @Nullable Output> kpis;

    /**
     * @return List of KPIs to show in Cost Analysis UI.
     * 
     */
    public Optional>> kpis() {
        return Optional.ofNullable(this.kpis);
    }

    /**
     * Metric to use when displaying costs.
     * 
     */
    @Import(name="metric")
    private @Nullable Output> metric;

    /**
     * @return Metric to use when displaying costs.
     * 
     */
    public Optional>> metric() {
        return Optional.ofNullable(this.metric);
    }

    /**
     * Date when the user last modified this view.
     * 
     */
    @Import(name="modifiedOn")
    private @Nullable Output modifiedOn;

    /**
     * @return Date when the user last modified this view.
     * 
     */
    public Optional> modifiedOn() {
        return Optional.ofNullable(this.modifiedOn);
    }

    /**
     * Configuration of 3 sub-views in the Cost Analysis UI.
     * 
     */
    @Import(name="pivots")
    private @Nullable Output> pivots;

    /**
     * @return Configuration of 3 sub-views in the Cost Analysis UI.
     * 
     */
    public Optional>> pivots() {
        return Optional.ofNullable(this.pivots);
    }

    /**
     * Cost Management scope to save the view on. 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.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for BillingProfile scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for InvoiceSection scope, 'providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.CostManagement/externalBillingAccounts/{externalBillingAccountName}' for ExternalBillingAccount scope, and '/providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}' for ExternalSubscription scope.
     * 
     */
    @Import(name="scope", required=true)
    private Output scope;

    /**
     * @return Cost Management scope to save the view on. 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.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for BillingProfile scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for InvoiceSection scope, 'providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.CostManagement/externalBillingAccounts/{externalBillingAccountName}' for ExternalBillingAccount scope, and '/providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}' for ExternalSubscription scope.
     * 
     */
    public Output scope() {
        return this.scope;
    }

    /**
     * Has time period for pulling data for the report.
     * 
     */
    @Import(name="timePeriod")
    private @Nullable Output timePeriod;

    /**
     * @return Has time period for pulling data for the report.
     * 
     */
    public Optional> timePeriod() {
        return Optional.ofNullable(this.timePeriod);
    }

    /**
     * The time frame for pulling data for the report. If custom, then a specific time period must be provided.
     * 
     */
    @Import(name="timeframe", required=true)
    private Output> timeframe;

    /**
     * @return The time frame for pulling data for the report. If custom, then a specific time period must be provided.
     * 
     */
    public Output> timeframe() {
        return this.timeframe;
    }

    /**
     * The type of the report. Usage represents actual usage, forecast represents forecasted data and UsageAndForecast represents both usage and forecasted data. Actual usage and forecasted data can be differentiated based on dates.
     * 
     */
    @Import(name="type", required=true)
    private Output> type;

    /**
     * @return The type of the report. Usage represents actual usage, forecast represents forecasted data and UsageAndForecast represents both usage and forecasted data. Actual usage and forecasted data can be differentiated based on dates.
     * 
     */
    public Output> type() {
        return this.type;
    }

    /**
     * View name
     * 
     */
    @Import(name="viewName")
    private @Nullable Output viewName;

    /**
     * @return View name
     * 
     */
    public Optional> viewName() {
        return Optional.ofNullable(this.viewName);
    }

    private ViewByScopeArgs() {}

    private ViewByScopeArgs(ViewByScopeArgs $) {
        this.accumulated = $.accumulated;
        this.chart = $.chart;
        this.dataSet = $.dataSet;
        this.dateRange = $.dateRange;
        this.displayName = $.displayName;
        this.eTag = $.eTag;
        this.includeMonetaryCommitment = $.includeMonetaryCommitment;
        this.kpis = $.kpis;
        this.metric = $.metric;
        this.modifiedOn = $.modifiedOn;
        this.pivots = $.pivots;
        this.scope = $.scope;
        this.timePeriod = $.timePeriod;
        this.timeframe = $.timeframe;
        this.type = $.type;
        this.viewName = $.viewName;
    }

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

    public static final class Builder {
        private ViewByScopeArgs $;

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

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

        /**
         * @param accumulated Show costs accumulated over time.
         * 
         * @return builder
         * 
         */
        public Builder accumulated(@Nullable Output> accumulated) {
            $.accumulated = accumulated;
            return this;
        }

        /**
         * @param accumulated Show costs accumulated over time.
         * 
         * @return builder
         * 
         */
        public Builder accumulated(Either accumulated) {
            return accumulated(Output.of(accumulated));
        }

        /**
         * @param accumulated Show costs accumulated over time.
         * 
         * @return builder
         * 
         */
        public Builder accumulated(String accumulated) {
            return accumulated(Either.ofLeft(accumulated));
        }

        /**
         * @param accumulated Show costs accumulated over time.
         * 
         * @return builder
         * 
         */
        public Builder accumulated(AccumulatedType accumulated) {
            return accumulated(Either.ofRight(accumulated));
        }

        /**
         * @param chart Chart type of the main view in Cost Analysis. Required.
         * 
         * @return builder
         * 
         */
        public Builder chart(@Nullable Output> chart) {
            $.chart = chart;
            return this;
        }

        /**
         * @param chart Chart type of the main view in Cost Analysis. Required.
         * 
         * @return builder
         * 
         */
        public Builder chart(Either chart) {
            return chart(Output.of(chart));
        }

        /**
         * @param chart Chart type of the main view in Cost Analysis. Required.
         * 
         * @return builder
         * 
         */
        public Builder chart(String chart) {
            return chart(Either.ofLeft(chart));
        }

        /**
         * @param chart Chart type of the main view in Cost Analysis. Required.
         * 
         * @return builder
         * 
         */
        public Builder chart(ChartType chart) {
            return chart(Either.ofRight(chart));
        }

        /**
         * @param dataSet Has definition for data in this report config.
         * 
         * @return builder
         * 
         */
        public Builder dataSet(@Nullable Output dataSet) {
            $.dataSet = dataSet;
            return this;
        }

        /**
         * @param dataSet Has definition for data in this report config.
         * 
         * @return builder
         * 
         */
        public Builder dataSet(ReportConfigDatasetArgs dataSet) {
            return dataSet(Output.of(dataSet));
        }

        /**
         * @param dateRange Date range of the current view.
         * 
         * @return builder
         * 
         */
        public Builder dateRange(@Nullable Output dateRange) {
            $.dateRange = dateRange;
            return this;
        }

        /**
         * @param dateRange Date range of the current view.
         * 
         * @return builder
         * 
         */
        public Builder dateRange(String dateRange) {
            return dateRange(Output.of(dateRange));
        }

        /**
         * @param displayName User input name of the view. Required.
         * 
         * @return builder
         * 
         */
        public Builder displayName(@Nullable Output displayName) {
            $.displayName = displayName;
            return this;
        }

        /**
         * @param displayName User input name of the view. Required.
         * 
         * @return builder
         * 
         */
        public Builder displayName(String displayName) {
            return displayName(Output.of(displayName));
        }

        /**
         * @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 includeMonetaryCommitment If true, report includes monetary commitment.
         * 
         * @return builder
         * 
         */
        public Builder includeMonetaryCommitment(@Nullable Output includeMonetaryCommitment) {
            $.includeMonetaryCommitment = includeMonetaryCommitment;
            return this;
        }

        /**
         * @param includeMonetaryCommitment If true, report includes monetary commitment.
         * 
         * @return builder
         * 
         */
        public Builder includeMonetaryCommitment(Boolean includeMonetaryCommitment) {
            return includeMonetaryCommitment(Output.of(includeMonetaryCommitment));
        }

        /**
         * @param kpis List of KPIs to show in Cost Analysis UI.
         * 
         * @return builder
         * 
         */
        public Builder kpis(@Nullable Output> kpis) {
            $.kpis = kpis;
            return this;
        }

        /**
         * @param kpis List of KPIs to show in Cost Analysis UI.
         * 
         * @return builder
         * 
         */
        public Builder kpis(List kpis) {
            return kpis(Output.of(kpis));
        }

        /**
         * @param kpis List of KPIs to show in Cost Analysis UI.
         * 
         * @return builder
         * 
         */
        public Builder kpis(KpiPropertiesArgs... kpis) {
            return kpis(List.of(kpis));
        }

        /**
         * @param metric Metric to use when displaying costs.
         * 
         * @return builder
         * 
         */
        public Builder metric(@Nullable Output> metric) {
            $.metric = metric;
            return this;
        }

        /**
         * @param metric Metric to use when displaying costs.
         * 
         * @return builder
         * 
         */
        public Builder metric(Either metric) {
            return metric(Output.of(metric));
        }

        /**
         * @param metric Metric to use when displaying costs.
         * 
         * @return builder
         * 
         */
        public Builder metric(String metric) {
            return metric(Either.ofLeft(metric));
        }

        /**
         * @param metric Metric to use when displaying costs.
         * 
         * @return builder
         * 
         */
        public Builder metric(MetricType metric) {
            return metric(Either.ofRight(metric));
        }

        /**
         * @param modifiedOn Date when the user last modified this view.
         * 
         * @return builder
         * 
         */
        public Builder modifiedOn(@Nullable Output modifiedOn) {
            $.modifiedOn = modifiedOn;
            return this;
        }

        /**
         * @param modifiedOn Date when the user last modified this view.
         * 
         * @return builder
         * 
         */
        public Builder modifiedOn(String modifiedOn) {
            return modifiedOn(Output.of(modifiedOn));
        }

        /**
         * @param pivots Configuration of 3 sub-views in the Cost Analysis UI.
         * 
         * @return builder
         * 
         */
        public Builder pivots(@Nullable Output> pivots) {
            $.pivots = pivots;
            return this;
        }

        /**
         * @param pivots Configuration of 3 sub-views in the Cost Analysis UI.
         * 
         * @return builder
         * 
         */
        public Builder pivots(List pivots) {
            return pivots(Output.of(pivots));
        }

        /**
         * @param pivots Configuration of 3 sub-views in the Cost Analysis UI.
         * 
         * @return builder
         * 
         */
        public Builder pivots(PivotPropertiesArgs... pivots) {
            return pivots(List.of(pivots));
        }

        /**
         * @param scope Cost Management scope to save the view on. 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.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for BillingProfile scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for InvoiceSection scope, 'providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.CostManagement/externalBillingAccounts/{externalBillingAccountName}' for ExternalBillingAccount scope, and '/providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}' for ExternalSubscription scope.
         * 
         * @return builder
         * 
         */
        public Builder scope(Output scope) {
            $.scope = scope;
            return this;
        }

        /**
         * @param scope Cost Management scope to save the view on. 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.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for BillingProfile scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/invoiceSections/{invoiceSectionId}' for InvoiceSection scope, 'providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group scope, '/providers/Microsoft.CostManagement/externalBillingAccounts/{externalBillingAccountName}' for ExternalBillingAccount scope, and '/providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}' for ExternalSubscription scope.
         * 
         * @return builder
         * 
         */
        public Builder scope(String scope) {
            return scope(Output.of(scope));
        }

        /**
         * @param timePeriod Has time period for pulling data for the report.
         * 
         * @return builder
         * 
         */
        public Builder timePeriod(@Nullable Output timePeriod) {
            $.timePeriod = timePeriod;
            return this;
        }

        /**
         * @param timePeriod Has time period for pulling data for the report.
         * 
         * @return builder
         * 
         */
        public Builder timePeriod(ReportConfigTimePeriodArgs timePeriod) {
            return timePeriod(Output.of(timePeriod));
        }

        /**
         * @param timeframe The time frame for pulling data for the report. If custom, then a specific time period must be provided.
         * 
         * @return builder
         * 
         */
        public Builder timeframe(Output> timeframe) {
            $.timeframe = timeframe;
            return this;
        }

        /**
         * @param timeframe The time frame for pulling data for the report. If custom, then a specific time period must be provided.
         * 
         * @return builder
         * 
         */
        public Builder timeframe(Either timeframe) {
            return timeframe(Output.of(timeframe));
        }

        /**
         * @param timeframe The time frame for pulling data for the report. If custom, then a specific time period must be provided.
         * 
         * @return builder
         * 
         */
        public Builder timeframe(String timeframe) {
            return timeframe(Either.ofLeft(timeframe));
        }

        /**
         * @param timeframe The time frame for pulling data for the report. If custom, then a specific time period must be provided.
         * 
         * @return builder
         * 
         */
        public Builder timeframe(ReportTimeframeType timeframe) {
            return timeframe(Either.ofRight(timeframe));
        }

        /**
         * @param type The type of the report. Usage represents actual usage, forecast represents forecasted data and UsageAndForecast represents both usage and forecasted data. Actual usage and forecasted data can be differentiated based on dates.
         * 
         * @return builder
         * 
         */
        public Builder type(Output> type) {
            $.type = type;
            return this;
        }

        /**
         * @param type The type of the report. Usage represents actual usage, forecast represents forecasted data and UsageAndForecast represents both usage and forecasted data. Actual usage and forecasted data can be differentiated based on dates.
         * 
         * @return builder
         * 
         */
        public Builder type(Either type) {
            return type(Output.of(type));
        }

        /**
         * @param type The type of the report. Usage represents actual usage, forecast represents forecasted data and UsageAndForecast represents both usage and forecasted data. Actual usage and forecasted data can be differentiated based on dates.
         * 
         * @return builder
         * 
         */
        public Builder type(String type) {
            return type(Either.ofLeft(type));
        }

        /**
         * @param type The type of the report. Usage represents actual usage, forecast represents forecasted data and UsageAndForecast represents both usage and forecasted data. Actual usage and forecasted data can be differentiated based on dates.
         * 
         * @return builder
         * 
         */
        public Builder type(ReportType type) {
            return type(Either.ofRight(type));
        }

        /**
         * @param viewName View name
         * 
         * @return builder
         * 
         */
        public Builder viewName(@Nullable Output viewName) {
            $.viewName = viewName;
            return this;
        }

        /**
         * @param viewName View name
         * 
         * @return builder
         * 
         */
        public Builder viewName(String viewName) {
            return viewName(Output.of(viewName));
        }

        public ViewByScopeArgs build() {
            if ($.scope == null) {
                throw new MissingRequiredPropertyException("ViewByScopeArgs", "scope");
            }
            if ($.timeframe == null) {
                throw new MissingRequiredPropertyException("ViewByScopeArgs", "timeframe");
            }
            if ($.type == null) {
                throw new MissingRequiredPropertyException("ViewByScopeArgs", "type");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy