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

com.pulumi.azurenative.solutions.ApplicationDefinitionArgs 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.solutions;

import com.pulumi.azurenative.solutions.enums.ApplicationLockLevel;
import com.pulumi.azurenative.solutions.inputs.ApplicationAuthorizationArgs;
import com.pulumi.azurenative.solutions.inputs.ApplicationDefinitionArtifactArgs;
import com.pulumi.azurenative.solutions.inputs.ApplicationDeploymentPolicyArgs;
import com.pulumi.azurenative.solutions.inputs.ApplicationManagementPolicyArgs;
import com.pulumi.azurenative.solutions.inputs.ApplicationNotificationPolicyArgs;
import com.pulumi.azurenative.solutions.inputs.ApplicationPackageLockingPolicyDefinitionArgs;
import com.pulumi.azurenative.solutions.inputs.ApplicationPolicyArgs;
import com.pulumi.azurenative.solutions.inputs.SkuArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.Object;
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 ApplicationDefinitionArgs extends com.pulumi.resources.ResourceArgs {

    public static final ApplicationDefinitionArgs Empty = new ApplicationDefinitionArgs();

    /**
     * The name of the managed application definition.
     * 
     */
    @Import(name="applicationDefinitionName")
    private @Nullable Output applicationDefinitionName;

    /**
     * @return The name of the managed application definition.
     * 
     */
    public Optional> applicationDefinitionName() {
        return Optional.ofNullable(this.applicationDefinitionName);
    }

    /**
     * The collection of managed application artifacts. The portal will use the files specified as artifacts to construct the user experience of creating a managed application from a managed application definition.
     * 
     */
    @Import(name="artifacts")
    private @Nullable Output> artifacts;

    /**
     * @return The collection of managed application artifacts. The portal will use the files specified as artifacts to construct the user experience of creating a managed application from a managed application definition.
     * 
     */
    public Optional>> artifacts() {
        return Optional.ofNullable(this.artifacts);
    }

    /**
     * The managed application provider authorizations.
     * 
     */
    @Import(name="authorizations")
    private @Nullable Output> authorizations;

    /**
     * @return The managed application provider authorizations.
     * 
     */
    public Optional>> authorizations() {
        return Optional.ofNullable(this.authorizations);
    }

    /**
     * The createUiDefinition json for the backing template with Microsoft.Solutions/applications resource. It can be a JObject or well-formed JSON string.
     * 
     */
    @Import(name="createUiDefinition")
    private @Nullable Output createUiDefinition;

    /**
     * @return The createUiDefinition json for the backing template with Microsoft.Solutions/applications resource. It can be a JObject or well-formed JSON string.
     * 
     */
    public Optional> createUiDefinition() {
        return Optional.ofNullable(this.createUiDefinition);
    }

    /**
     * The managed application deployment policy.
     * 
     */
    @Import(name="deploymentPolicy")
    private @Nullable Output deploymentPolicy;

    /**
     * @return The managed application deployment policy.
     * 
     */
    public Optional> deploymentPolicy() {
        return Optional.ofNullable(this.deploymentPolicy);
    }

    /**
     * The managed application definition description.
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return The managed application definition description.
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * The managed application definition display name.
     * 
     */
    @Import(name="displayName")
    private @Nullable Output displayName;

    /**
     * @return The managed application definition display name.
     * 
     */
    public Optional> displayName() {
        return Optional.ofNullable(this.displayName);
    }

    /**
     * A value indicating whether the package is enabled or not.
     * 
     */
    @Import(name="isEnabled")
    private @Nullable Output isEnabled;

    /**
     * @return A value indicating whether the package is enabled or not.
     * 
     */
    public Optional> isEnabled() {
        return Optional.ofNullable(this.isEnabled);
    }

    /**
     * Resource location
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

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

    /**
     * The managed application lock level.
     * 
     */
    @Import(name="lockLevel", required=true)
    private Output lockLevel;

    /**
     * @return The managed application lock level.
     * 
     */
    public Output lockLevel() {
        return this.lockLevel;
    }

    /**
     * The managed application locking policy.
     * 
     */
    @Import(name="lockingPolicy")
    private @Nullable Output lockingPolicy;

    /**
     * @return The managed application locking policy.
     * 
     */
    public Optional> lockingPolicy() {
        return Optional.ofNullable(this.lockingPolicy);
    }

    /**
     * The inline main template json which has resources to be provisioned. It can be a JObject or well-formed JSON string.
     * 
     */
    @Import(name="mainTemplate")
    private @Nullable Output mainTemplate;

    /**
     * @return The inline main template json which has resources to be provisioned. It can be a JObject or well-formed JSON string.
     * 
     */
    public Optional> mainTemplate() {
        return Optional.ofNullable(this.mainTemplate);
    }

    /**
     * ID of the resource that manages this resource.
     * 
     */
    @Import(name="managedBy")
    private @Nullable Output managedBy;

    /**
     * @return ID of the resource that manages this resource.
     * 
     */
    public Optional> managedBy() {
        return Optional.ofNullable(this.managedBy);
    }

    /**
     * The managed application management policy that determines publisher's access to the managed resource group.
     * 
     */
    @Import(name="managementPolicy")
    private @Nullable Output managementPolicy;

    /**
     * @return The managed application management policy that determines publisher's access to the managed resource group.
     * 
     */
    public Optional> managementPolicy() {
        return Optional.ofNullable(this.managementPolicy);
    }

    /**
     * The managed application notification policy.
     * 
     */
    @Import(name="notificationPolicy")
    private @Nullable Output notificationPolicy;

    /**
     * @return The managed application notification policy.
     * 
     */
    public Optional> notificationPolicy() {
        return Optional.ofNullable(this.notificationPolicy);
    }

    /**
     * The managed application definition package file Uri. Use this element
     * 
     */
    @Import(name="packageFileUri")
    private @Nullable Output packageFileUri;

    /**
     * @return The managed application definition package file Uri. Use this element
     * 
     */
    public Optional> packageFileUri() {
        return Optional.ofNullable(this.packageFileUri);
    }

    /**
     * The managed application provider policies.
     * 
     */
    @Import(name="policies")
    private @Nullable Output> policies;

    /**
     * @return The managed application provider policies.
     * 
     */
    public Optional>> policies() {
        return Optional.ofNullable(this.policies);
    }

    /**
     * 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 SKU of the resource.
     * 
     */
    @Import(name="sku")
    private @Nullable Output sku;

    /**
     * @return The SKU of the resource.
     * 
     */
    public Optional> sku() {
        return Optional.ofNullable(this.sku);
    }

    /**
     * The storage account id for bring your own storage scenario.
     * 
     */
    @Import(name="storageAccountId")
    private @Nullable Output storageAccountId;

    /**
     * @return The storage account id for bring your own storage scenario.
     * 
     */
    public Optional> storageAccountId() {
        return Optional.ofNullable(this.storageAccountId);
    }

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

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

    private ApplicationDefinitionArgs() {}

    private ApplicationDefinitionArgs(ApplicationDefinitionArgs $) {
        this.applicationDefinitionName = $.applicationDefinitionName;
        this.artifacts = $.artifacts;
        this.authorizations = $.authorizations;
        this.createUiDefinition = $.createUiDefinition;
        this.deploymentPolicy = $.deploymentPolicy;
        this.description = $.description;
        this.displayName = $.displayName;
        this.isEnabled = $.isEnabled;
        this.location = $.location;
        this.lockLevel = $.lockLevel;
        this.lockingPolicy = $.lockingPolicy;
        this.mainTemplate = $.mainTemplate;
        this.managedBy = $.managedBy;
        this.managementPolicy = $.managementPolicy;
        this.notificationPolicy = $.notificationPolicy;
        this.packageFileUri = $.packageFileUri;
        this.policies = $.policies;
        this.resourceGroupName = $.resourceGroupName;
        this.sku = $.sku;
        this.storageAccountId = $.storageAccountId;
        this.tags = $.tags;
    }

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

    public static final class Builder {
        private ApplicationDefinitionArgs $;

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

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

        /**
         * @param applicationDefinitionName The name of the managed application definition.
         * 
         * @return builder
         * 
         */
        public Builder applicationDefinitionName(@Nullable Output applicationDefinitionName) {
            $.applicationDefinitionName = applicationDefinitionName;
            return this;
        }

        /**
         * @param applicationDefinitionName The name of the managed application definition.
         * 
         * @return builder
         * 
         */
        public Builder applicationDefinitionName(String applicationDefinitionName) {
            return applicationDefinitionName(Output.of(applicationDefinitionName));
        }

        /**
         * @param artifacts The collection of managed application artifacts. The portal will use the files specified as artifacts to construct the user experience of creating a managed application from a managed application definition.
         * 
         * @return builder
         * 
         */
        public Builder artifacts(@Nullable Output> artifacts) {
            $.artifacts = artifacts;
            return this;
        }

        /**
         * @param artifacts The collection of managed application artifacts. The portal will use the files specified as artifacts to construct the user experience of creating a managed application from a managed application definition.
         * 
         * @return builder
         * 
         */
        public Builder artifacts(List artifacts) {
            return artifacts(Output.of(artifacts));
        }

        /**
         * @param artifacts The collection of managed application artifacts. The portal will use the files specified as artifacts to construct the user experience of creating a managed application from a managed application definition.
         * 
         * @return builder
         * 
         */
        public Builder artifacts(ApplicationDefinitionArtifactArgs... artifacts) {
            return artifacts(List.of(artifacts));
        }

        /**
         * @param authorizations The managed application provider authorizations.
         * 
         * @return builder
         * 
         */
        public Builder authorizations(@Nullable Output> authorizations) {
            $.authorizations = authorizations;
            return this;
        }

        /**
         * @param authorizations The managed application provider authorizations.
         * 
         * @return builder
         * 
         */
        public Builder authorizations(List authorizations) {
            return authorizations(Output.of(authorizations));
        }

        /**
         * @param authorizations The managed application provider authorizations.
         * 
         * @return builder
         * 
         */
        public Builder authorizations(ApplicationAuthorizationArgs... authorizations) {
            return authorizations(List.of(authorizations));
        }

        /**
         * @param createUiDefinition The createUiDefinition json for the backing template with Microsoft.Solutions/applications resource. It can be a JObject or well-formed JSON string.
         * 
         * @return builder
         * 
         */
        public Builder createUiDefinition(@Nullable Output createUiDefinition) {
            $.createUiDefinition = createUiDefinition;
            return this;
        }

        /**
         * @param createUiDefinition The createUiDefinition json for the backing template with Microsoft.Solutions/applications resource. It can be a JObject or well-formed JSON string.
         * 
         * @return builder
         * 
         */
        public Builder createUiDefinition(Object createUiDefinition) {
            return createUiDefinition(Output.of(createUiDefinition));
        }

        /**
         * @param deploymentPolicy The managed application deployment policy.
         * 
         * @return builder
         * 
         */
        public Builder deploymentPolicy(@Nullable Output deploymentPolicy) {
            $.deploymentPolicy = deploymentPolicy;
            return this;
        }

        /**
         * @param deploymentPolicy The managed application deployment policy.
         * 
         * @return builder
         * 
         */
        public Builder deploymentPolicy(ApplicationDeploymentPolicyArgs deploymentPolicy) {
            return deploymentPolicy(Output.of(deploymentPolicy));
        }

        /**
         * @param description The managed application definition description.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description The managed application definition description.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param displayName The managed application definition display name.
         * 
         * @return builder
         * 
         */
        public Builder displayName(@Nullable Output displayName) {
            $.displayName = displayName;
            return this;
        }

        /**
         * @param displayName The managed application definition display name.
         * 
         * @return builder
         * 
         */
        public Builder displayName(String displayName) {
            return displayName(Output.of(displayName));
        }

        /**
         * @param isEnabled A value indicating whether the package is enabled or not.
         * 
         * @return builder
         * 
         */
        public Builder isEnabled(@Nullable Output isEnabled) {
            $.isEnabled = isEnabled;
            return this;
        }

        /**
         * @param isEnabled A value indicating whether the package is enabled or not.
         * 
         * @return builder
         * 
         */
        public Builder isEnabled(Boolean isEnabled) {
            return isEnabled(Output.of(isEnabled));
        }

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

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

        /**
         * @param lockLevel The managed application lock level.
         * 
         * @return builder
         * 
         */
        public Builder lockLevel(Output lockLevel) {
            $.lockLevel = lockLevel;
            return this;
        }

        /**
         * @param lockLevel The managed application lock level.
         * 
         * @return builder
         * 
         */
        public Builder lockLevel(ApplicationLockLevel lockLevel) {
            return lockLevel(Output.of(lockLevel));
        }

        /**
         * @param lockingPolicy The managed application locking policy.
         * 
         * @return builder
         * 
         */
        public Builder lockingPolicy(@Nullable Output lockingPolicy) {
            $.lockingPolicy = lockingPolicy;
            return this;
        }

        /**
         * @param lockingPolicy The managed application locking policy.
         * 
         * @return builder
         * 
         */
        public Builder lockingPolicy(ApplicationPackageLockingPolicyDefinitionArgs lockingPolicy) {
            return lockingPolicy(Output.of(lockingPolicy));
        }

        /**
         * @param mainTemplate The inline main template json which has resources to be provisioned. It can be a JObject or well-formed JSON string.
         * 
         * @return builder
         * 
         */
        public Builder mainTemplate(@Nullable Output mainTemplate) {
            $.mainTemplate = mainTemplate;
            return this;
        }

        /**
         * @param mainTemplate The inline main template json which has resources to be provisioned. It can be a JObject or well-formed JSON string.
         * 
         * @return builder
         * 
         */
        public Builder mainTemplate(Object mainTemplate) {
            return mainTemplate(Output.of(mainTemplate));
        }

        /**
         * @param managedBy ID of the resource that manages this resource.
         * 
         * @return builder
         * 
         */
        public Builder managedBy(@Nullable Output managedBy) {
            $.managedBy = managedBy;
            return this;
        }

        /**
         * @param managedBy ID of the resource that manages this resource.
         * 
         * @return builder
         * 
         */
        public Builder managedBy(String managedBy) {
            return managedBy(Output.of(managedBy));
        }

        /**
         * @param managementPolicy The managed application management policy that determines publisher's access to the managed resource group.
         * 
         * @return builder
         * 
         */
        public Builder managementPolicy(@Nullable Output managementPolicy) {
            $.managementPolicy = managementPolicy;
            return this;
        }

        /**
         * @param managementPolicy The managed application management policy that determines publisher's access to the managed resource group.
         * 
         * @return builder
         * 
         */
        public Builder managementPolicy(ApplicationManagementPolicyArgs managementPolicy) {
            return managementPolicy(Output.of(managementPolicy));
        }

        /**
         * @param notificationPolicy The managed application notification policy.
         * 
         * @return builder
         * 
         */
        public Builder notificationPolicy(@Nullable Output notificationPolicy) {
            $.notificationPolicy = notificationPolicy;
            return this;
        }

        /**
         * @param notificationPolicy The managed application notification policy.
         * 
         * @return builder
         * 
         */
        public Builder notificationPolicy(ApplicationNotificationPolicyArgs notificationPolicy) {
            return notificationPolicy(Output.of(notificationPolicy));
        }

        /**
         * @param packageFileUri The managed application definition package file Uri. Use this element
         * 
         * @return builder
         * 
         */
        public Builder packageFileUri(@Nullable Output packageFileUri) {
            $.packageFileUri = packageFileUri;
            return this;
        }

        /**
         * @param packageFileUri The managed application definition package file Uri. Use this element
         * 
         * @return builder
         * 
         */
        public Builder packageFileUri(String packageFileUri) {
            return packageFileUri(Output.of(packageFileUri));
        }

        /**
         * @param policies The managed application provider policies.
         * 
         * @return builder
         * 
         */
        public Builder policies(@Nullable Output> policies) {
            $.policies = policies;
            return this;
        }

        /**
         * @param policies The managed application provider policies.
         * 
         * @return builder
         * 
         */
        public Builder policies(List policies) {
            return policies(Output.of(policies));
        }

        /**
         * @param policies The managed application provider policies.
         * 
         * @return builder
         * 
         */
        public Builder policies(ApplicationPolicyArgs... policies) {
            return policies(List.of(policies));
        }

        /**
         * @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 sku The SKU of the resource.
         * 
         * @return builder
         * 
         */
        public Builder sku(@Nullable Output sku) {
            $.sku = sku;
            return this;
        }

        /**
         * @param sku The SKU of the resource.
         * 
         * @return builder
         * 
         */
        public Builder sku(SkuArgs sku) {
            return sku(Output.of(sku));
        }

        /**
         * @param storageAccountId The storage account id for bring your own storage scenario.
         * 
         * @return builder
         * 
         */
        public Builder storageAccountId(@Nullable Output storageAccountId) {
            $.storageAccountId = storageAccountId;
            return this;
        }

        /**
         * @param storageAccountId The storage account id for bring your own storage scenario.
         * 
         * @return builder
         * 
         */
        public Builder storageAccountId(String storageAccountId) {
            return storageAccountId(Output.of(storageAccountId));
        }

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

        public ApplicationDefinitionArgs build() {
            if ($.lockLevel == null) {
                throw new MissingRequiredPropertyException("ApplicationDefinitionArgs", "lockLevel");
            }
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("ApplicationDefinitionArgs", "resourceGroupName");
            }
            return $;
        }
    }

}