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

com.pulumi.azurenative.storage.BlobContainerImmutabilityPolicyArgs Maven / Gradle / Ivy

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

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final BlobContainerImmutabilityPolicyArgs Empty = new BlobContainerImmutabilityPolicyArgs();

    /**
     * The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
     * 
     */
    @Import(name="accountName", required=true)
    private Output accountName;

    /**
     * @return The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
     * 
     */
    public Output accountName() {
        return this.accountName;
    }

    /**
     * This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be written to an append blob while maintaining immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property cannot be changed with ExtendImmutabilityPolicy API.
     * 
     */
    @Import(name="allowProtectedAppendWrites")
    private @Nullable Output allowProtectedAppendWrites;

    /**
     * @return This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be written to an append blob while maintaining immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property cannot be changed with ExtendImmutabilityPolicy API.
     * 
     */
    public Optional> allowProtectedAppendWrites() {
        return Optional.ofNullable(this.allowProtectedAppendWrites);
    }

    /**
     * This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be written to both 'Append and Bock Blobs' while maintaining immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property cannot be changed with ExtendImmutabilityPolicy API. The 'allowProtectedAppendWrites' and 'allowProtectedAppendWritesAll' properties are mutually exclusive.
     * 
     */
    @Import(name="allowProtectedAppendWritesAll")
    private @Nullable Output allowProtectedAppendWritesAll;

    /**
     * @return This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be written to both 'Append and Bock Blobs' while maintaining immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property cannot be changed with ExtendImmutabilityPolicy API. The 'allowProtectedAppendWrites' and 'allowProtectedAppendWritesAll' properties are mutually exclusive.
     * 
     */
    public Optional> allowProtectedAppendWritesAll() {
        return Optional.ofNullable(this.allowProtectedAppendWritesAll);
    }

    /**
     * The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
     * 
     */
    @Import(name="containerName", required=true)
    private Output containerName;

    /**
     * @return The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
     * 
     */
    public Output containerName() {
        return this.containerName;
    }

    /**
     * The immutability period for the blobs in the container since the policy creation, in days.
     * 
     */
    @Import(name="immutabilityPeriodSinceCreationInDays")
    private @Nullable Output immutabilityPeriodSinceCreationInDays;

    /**
     * @return The immutability period for the blobs in the container since the policy creation, in days.
     * 
     */
    public Optional> immutabilityPeriodSinceCreationInDays() {
        return Optional.ofNullable(this.immutabilityPeriodSinceCreationInDays);
    }

    /**
     * The name of the blob container immutabilityPolicy within the specified storage account. ImmutabilityPolicy Name must be 'default'
     * 
     */
    @Import(name="immutabilityPolicyName")
    private @Nullable Output immutabilityPolicyName;

    /**
     * @return The name of the blob container immutabilityPolicy within the specified storage account. ImmutabilityPolicy Name must be 'default'
     * 
     */
    public Optional> immutabilityPolicyName() {
        return Optional.ofNullable(this.immutabilityPolicyName);
    }

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

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

    private BlobContainerImmutabilityPolicyArgs() {}

    private BlobContainerImmutabilityPolicyArgs(BlobContainerImmutabilityPolicyArgs $) {
        this.accountName = $.accountName;
        this.allowProtectedAppendWrites = $.allowProtectedAppendWrites;
        this.allowProtectedAppendWritesAll = $.allowProtectedAppendWritesAll;
        this.containerName = $.containerName;
        this.immutabilityPeriodSinceCreationInDays = $.immutabilityPeriodSinceCreationInDays;
        this.immutabilityPolicyName = $.immutabilityPolicyName;
        this.resourceGroupName = $.resourceGroupName;
    }

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

    public static final class Builder {
        private BlobContainerImmutabilityPolicyArgs $;

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

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

        /**
         * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
         * 
         * @return builder
         * 
         */
        public Builder accountName(Output accountName) {
            $.accountName = accountName;
            return this;
        }

        /**
         * @param accountName The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
         * 
         * @return builder
         * 
         */
        public Builder accountName(String accountName) {
            return accountName(Output.of(accountName));
        }

        /**
         * @param allowProtectedAppendWrites This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be written to an append blob while maintaining immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property cannot be changed with ExtendImmutabilityPolicy API.
         * 
         * @return builder
         * 
         */
        public Builder allowProtectedAppendWrites(@Nullable Output allowProtectedAppendWrites) {
            $.allowProtectedAppendWrites = allowProtectedAppendWrites;
            return this;
        }

        /**
         * @param allowProtectedAppendWrites This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be written to an append blob while maintaining immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property cannot be changed with ExtendImmutabilityPolicy API.
         * 
         * @return builder
         * 
         */
        public Builder allowProtectedAppendWrites(Boolean allowProtectedAppendWrites) {
            return allowProtectedAppendWrites(Output.of(allowProtectedAppendWrites));
        }

        /**
         * @param allowProtectedAppendWritesAll This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be written to both 'Append and Bock Blobs' while maintaining immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property cannot be changed with ExtendImmutabilityPolicy API. The 'allowProtectedAppendWrites' and 'allowProtectedAppendWritesAll' properties are mutually exclusive.
         * 
         * @return builder
         * 
         */
        public Builder allowProtectedAppendWritesAll(@Nullable Output allowProtectedAppendWritesAll) {
            $.allowProtectedAppendWritesAll = allowProtectedAppendWritesAll;
            return this;
        }

        /**
         * @param allowProtectedAppendWritesAll This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be written to both 'Append and Bock Blobs' while maintaining immutability protection and compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property cannot be changed with ExtendImmutabilityPolicy API. The 'allowProtectedAppendWrites' and 'allowProtectedAppendWritesAll' properties are mutually exclusive.
         * 
         * @return builder
         * 
         */
        public Builder allowProtectedAppendWritesAll(Boolean allowProtectedAppendWritesAll) {
            return allowProtectedAppendWritesAll(Output.of(allowProtectedAppendWritesAll));
        }

        /**
         * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
         * 
         * @return builder
         * 
         */
        public Builder containerName(Output containerName) {
            $.containerName = containerName;
            return this;
        }

        /**
         * @param containerName The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
         * 
         * @return builder
         * 
         */
        public Builder containerName(String containerName) {
            return containerName(Output.of(containerName));
        }

        /**
         * @param immutabilityPeriodSinceCreationInDays The immutability period for the blobs in the container since the policy creation, in days.
         * 
         * @return builder
         * 
         */
        public Builder immutabilityPeriodSinceCreationInDays(@Nullable Output immutabilityPeriodSinceCreationInDays) {
            $.immutabilityPeriodSinceCreationInDays = immutabilityPeriodSinceCreationInDays;
            return this;
        }

        /**
         * @param immutabilityPeriodSinceCreationInDays The immutability period for the blobs in the container since the policy creation, in days.
         * 
         * @return builder
         * 
         */
        public Builder immutabilityPeriodSinceCreationInDays(Integer immutabilityPeriodSinceCreationInDays) {
            return immutabilityPeriodSinceCreationInDays(Output.of(immutabilityPeriodSinceCreationInDays));
        }

        /**
         * @param immutabilityPolicyName The name of the blob container immutabilityPolicy within the specified storage account. ImmutabilityPolicy Name must be 'default'
         * 
         * @return builder
         * 
         */
        public Builder immutabilityPolicyName(@Nullable Output immutabilityPolicyName) {
            $.immutabilityPolicyName = immutabilityPolicyName;
            return this;
        }

        /**
         * @param immutabilityPolicyName The name of the blob container immutabilityPolicy within the specified storage account. ImmutabilityPolicy Name must be 'default'
         * 
         * @return builder
         * 
         */
        public Builder immutabilityPolicyName(String immutabilityPolicyName) {
            return immutabilityPolicyName(Output.of(immutabilityPolicyName));
        }

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

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

        public BlobContainerImmutabilityPolicyArgs build() {
            if ($.accountName == null) {
                throw new MissingRequiredPropertyException("BlobContainerImmutabilityPolicyArgs", "accountName");
            }
            if ($.containerName == null) {
                throw new MissingRequiredPropertyException("BlobContainerImmutabilityPolicyArgs", "containerName");
            }
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("BlobContainerImmutabilityPolicyArgs", "resourceGroupName");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy