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

com.pulumi.alicloud.ecs.EcsDiskArgs Maven / Gradle / Ivy

There is a newer version: 3.63.0-alpha.1727424957
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.alicloud.ecs;

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


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

    public static final EcsDiskArgs Empty = new EcsDiskArgs();

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

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

    /**
     * Field `availability_zone` has been deprecated from provider version 1.122.0. New field `zone_id` instead.
     * 
     * @deprecated
     * Field 'availability_zone' has been deprecated from provider version 1.122.0. New field 'zone_id' instead
     * 
     */
    @Deprecated /* Field 'availability_zone' has been deprecated from provider version 1.122.0. New field 'zone_id' instead */
    @Import(name="availabilityZone")
    private @Nullable Output availabilityZone;

    /**
     * @return Field `availability_zone` has been deprecated from provider version 1.122.0. New field `zone_id` instead.
     * 
     * @deprecated
     * Field 'availability_zone' has been deprecated from provider version 1.122.0. New field 'zone_id' instead
     * 
     */
    @Deprecated /* Field 'availability_zone' has been deprecated from provider version 1.122.0. New field 'zone_id' instead */
    public Optional> availabilityZone() {
        return Optional.ofNullable(this.availabilityZone);
    }

    /**
     * Category of the disk. Valid values are `cloud`, `cloud_efficiency`, `cloud_ssd`, `cloud_essd`, `cloud_auto`, `cloud_essd_entry`. Default is `cloud_efficiency`.
     * 
     */
    @Import(name="category")
    private @Nullable Output category;

    /**
     * @return Category of the disk. Valid values are `cloud`, `cloud_efficiency`, `cloud_ssd`, `cloud_essd`, `cloud_auto`, `cloud_essd_entry`. Default is `cloud_efficiency`.
     * 
     */
    public Optional> category() {
        return Optional.ofNullable(this.category);
    }

    /**
     * Indicates whether the automatic snapshot is deleted when the disk is released. Default value: `false`.
     * 
     */
    @Import(name="deleteAutoSnapshot")
    private @Nullable Output deleteAutoSnapshot;

    /**
     * @return Indicates whether the automatic snapshot is deleted when the disk is released. Default value: `false`.
     * 
     */
    public Optional> deleteAutoSnapshot() {
        return Optional.ofNullable(this.deleteAutoSnapshot);
    }

    /**
     * Indicates whether the disk is released together with the instance. Default value: `false`.
     * 
     */
    @Import(name="deleteWithInstance")
    private @Nullable Output deleteWithInstance;

    /**
     * @return Indicates whether the disk is released together with the instance. Default value: `false`.
     * 
     */
    public Optional> deleteWithInstance() {
        return Optional.ofNullable(this.deleteWithInstance);
    }

    /**
     * Description of the disk. This description can have a string of 2 to 256 characters, It cannot begin with http:// or https://. Default value is null.
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return Description of the disk. This description can have a string of 2 to 256 characters, It cannot begin with http:// or https://. Default value is null.
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * Name of the ECS disk. This name can have a string of 2 to 128 characters, must contain only alphanumeric characters or hyphens, such as "-",".","_", and must not begin or end with a hyphen, and must not begin with `http://` or `https://`. Default value is `null`.
     * 
     */
    @Import(name="diskName")
    private @Nullable Output diskName;

    /**
     * @return Name of the ECS disk. This name can have a string of 2 to 128 characters, must contain only alphanumeric characters or hyphens, such as "-",".","_", and must not begin or end with a hyphen, and must not begin with `http://` or `https://`. Default value is `null`.
     * 
     */
    public Optional> diskName() {
        return Optional.ofNullable(this.diskName);
    }

    /**
     * Specifies whether to check the validity of the request without actually making the request.request Default value: false. Valid values:
     * 
     */
    @Import(name="dryRun")
    private @Nullable Output dryRun;

    /**
     * @return Specifies whether to check the validity of the request without actually making the request.request Default value: false. Valid values:
     * 
     */
    public Optional> dryRun() {
        return Optional.ofNullable(this.dryRun);
    }

    /**
     * Indicates whether to enable creating snapshot automatically.
     * 
     */
    @Import(name="enableAutoSnapshot")
    private @Nullable Output enableAutoSnapshot;

    /**
     * @return Indicates whether to enable creating snapshot automatically.
     * 
     */
    public Optional> enableAutoSnapshot() {
        return Optional.ofNullable(this.enableAutoSnapshot);
    }

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

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

    /**
     * If true, the disk will be encrypted, conflict with `snapshot_id`.
     * 
     */
    @Import(name="encrypted")
    private @Nullable Output encrypted;

    /**
     * @return If true, the disk will be encrypted, conflict with `snapshot_id`.
     * 
     */
    public Optional> encrypted() {
        return Optional.ofNullable(this.encrypted);
    }

    /**
     * The ID of the instance to which the created subscription disk is automatically attached.
     * * After you specify the instance ID, the specified `resource_group_id`, `tags`, and `kms_key_id` parameters are ignored.
     * * One of the `zone_id` and `instance_id` must be set but can not be set at the same time.
     * 
     */
    @Import(name="instanceId")
    private @Nullable Output instanceId;

    /**
     * @return The ID of the instance to which the created subscription disk is automatically attached.
     * * After you specify the instance ID, the specified `resource_group_id`, `tags`, and `kms_key_id` parameters are ignored.
     * * One of the `zone_id` and `instance_id` must be set but can not be set at the same time.
     * 
     */
    public Optional> instanceId() {
        return Optional.ofNullable(this.instanceId);
    }

    /**
     * The ID of the KMS key corresponding to the data disk, The specified parameter `Encrypted` must be `true` when KmsKeyId is not empty.
     * 
     */
    @Import(name="kmsKeyId")
    private @Nullable Output kmsKeyId;

    /**
     * @return The ID of the KMS key corresponding to the data disk, The specified parameter `Encrypted` must be `true` when KmsKeyId is not empty.
     * 
     */
    public Optional> kmsKeyId() {
        return Optional.ofNullable(this.kmsKeyId);
    }

    /**
     * Field `name` has been deprecated from provider version 1.122.0. New field `disk_name` instead.
     * 
     * @deprecated
     * Field 'name' has been deprecated from provider version 1.122.0. New field 'disk_name' instead.
     * 
     */
    @Deprecated /* Field 'name' has been deprecated from provider version 1.122.0. New field 'disk_name' instead. */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return Field `name` has been deprecated from provider version 1.122.0. New field `disk_name` instead.
     * 
     * @deprecated
     * Field 'name' has been deprecated from provider version 1.122.0. New field 'disk_name' instead.
     * 
     */
    @Deprecated /* Field 'name' has been deprecated from provider version 1.122.0. New field 'disk_name' instead. */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * Payment method for disk. Valid values: `PayAsYouGo`, `Subscription`. Default to `PayAsYouGo`. If you want to change the disk payment type, the `instance_id` is required.
     * 
     */
    @Import(name="paymentType")
    private @Nullable Output paymentType;

    /**
     * @return Payment method for disk. Valid values: `PayAsYouGo`, `Subscription`. Default to `PayAsYouGo`. If you want to change the disk payment type, the `instance_id` is required.
     * 
     */
    public Optional> paymentType() {
        return Optional.ofNullable(this.paymentType);
    }

    /**
     * Specifies the performance level of an ESSD when you create the ESSD. Valid values:
     * * `PL1`: A single ESSD delivers up to 50,000 random read/write IOPS.
     * * `PL2`: A single ESSD delivers up to 100,000 random read/write IOPS.
     * * `PL3`: A single ESSD delivers up to 1,000,000 random read/write IOPS.
     * 
     */
    @Import(name="performanceLevel")
    private @Nullable Output performanceLevel;

    /**
     * @return Specifies the performance level of an ESSD when you create the ESSD. Valid values:
     * * `PL1`: A single ESSD delivers up to 50,000 random read/write IOPS.
     * * `PL2`: A single ESSD delivers up to 100,000 random read/write IOPS.
     * * `PL3`: A single ESSD delivers up to 1,000,000 random read/write IOPS.
     * 
     */
    public Optional> performanceLevel() {
        return Optional.ofNullable(this.performanceLevel);
    }

    /**
     * The Id of resource group which the disk belongs. This attribute only supports adding or updating, not destroying.
     * 
     */
    @Import(name="resourceGroupId")
    private @Nullable Output resourceGroupId;

    /**
     * @return The Id of resource group which the disk belongs. This attribute only supports adding or updating, not destroying.
     * 
     */
    public Optional> resourceGroupId() {
        return Optional.ofNullable(this.resourceGroupId);
    }

    /**
     * The size of the disk in GiBs. When resize the disk, the new size must be greater than the former value, or you would get an error `InvalidDiskSize.TooSmall`.
     * 
     */
    @Import(name="size")
    private @Nullable Output size;

    /**
     * @return The size of the disk in GiBs. When resize the disk, the new size must be greater than the former value, or you would get an error `InvalidDiskSize.TooSmall`.
     * 
     */
    public Optional> size() {
        return Optional.ofNullable(this.size);
    }

    /**
     * A snapshot to base the disk off of. If the disk size required by snapshot is greater than `size`, the `size` will be ignored, conflict with `encrypted`.
     * 
     */
    @Import(name="snapshotId")
    private @Nullable Output snapshotId;

    /**
     * @return A snapshot to base the disk off of. If the disk size required by snapshot is greater than `size`, the `size` will be ignored, conflict with `encrypted`.
     * 
     */
    public Optional> snapshotId() {
        return Optional.ofNullable(this.snapshotId);
    }

    /**
     * The ID of the storage set.
     * 
     */
    @Import(name="storageSetId")
    private @Nullable Output storageSetId;

    /**
     * @return The ID of the storage set.
     * 
     */
    public Optional> storageSetId() {
        return Optional.ofNullable(this.storageSetId);
    }

    /**
     * The number of partitions in the storage set.
     * 
     */
    @Import(name="storageSetPartitionNumber")
    private @Nullable Output storageSetPartitionNumber;

    /**
     * @return The number of partitions in the storage set.
     * 
     */
    public Optional> storageSetPartitionNumber() {
        return Optional.ofNullable(this.storageSetPartitionNumber);
    }

    /**
     * A mapping of tags to assign to the resource.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return A mapping of tags to assign to the resource.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * The type to expand cloud disks. Valid Values: `online`, `offline`. Default to `offline`.
     * 
     */
    @Import(name="type")
    private @Nullable Output type;

    /**
     * @return The type to expand cloud disks. Valid Values: `online`, `offline`. Default to `offline`.
     * 
     */
    public Optional> type() {
        return Optional.ofNullable(this.type);
    }

    /**
     * ID of the free zone to which the disk belongs. One of the `zone_id` and `instance_id` must be set but can not be set at the same time.
     * 
     */
    @Import(name="zoneId")
    private @Nullable Output zoneId;

    /**
     * @return ID of the free zone to which the disk belongs. One of the `zone_id` and `instance_id` must be set but can not be set at the same time.
     * 
     */
    public Optional> zoneId() {
        return Optional.ofNullable(this.zoneId);
    }

    private EcsDiskArgs() {}

    private EcsDiskArgs(EcsDiskArgs $) {
        this.advancedFeatures = $.advancedFeatures;
        this.availabilityZone = $.availabilityZone;
        this.category = $.category;
        this.deleteAutoSnapshot = $.deleteAutoSnapshot;
        this.deleteWithInstance = $.deleteWithInstance;
        this.description = $.description;
        this.diskName = $.diskName;
        this.dryRun = $.dryRun;
        this.enableAutoSnapshot = $.enableAutoSnapshot;
        this.encryptAlgorithm = $.encryptAlgorithm;
        this.encrypted = $.encrypted;
        this.instanceId = $.instanceId;
        this.kmsKeyId = $.kmsKeyId;
        this.name = $.name;
        this.paymentType = $.paymentType;
        this.performanceLevel = $.performanceLevel;
        this.resourceGroupId = $.resourceGroupId;
        this.size = $.size;
        this.snapshotId = $.snapshotId;
        this.storageSetId = $.storageSetId;
        this.storageSetPartitionNumber = $.storageSetPartitionNumber;
        this.tags = $.tags;
        this.type = $.type;
        this.zoneId = $.zoneId;
    }

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

    public static final class Builder {
        private EcsDiskArgs $;

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

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

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

        public Builder advancedFeatures(String advancedFeatures) {
            return advancedFeatures(Output.of(advancedFeatures));
        }

        /**
         * @param availabilityZone Field `availability_zone` has been deprecated from provider version 1.122.0. New field `zone_id` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'availability_zone' has been deprecated from provider version 1.122.0. New field 'zone_id' instead
         * 
         */
        @Deprecated /* Field 'availability_zone' has been deprecated from provider version 1.122.0. New field 'zone_id' instead */
        public Builder availabilityZone(@Nullable Output availabilityZone) {
            $.availabilityZone = availabilityZone;
            return this;
        }

        /**
         * @param availabilityZone Field `availability_zone` has been deprecated from provider version 1.122.0. New field `zone_id` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'availability_zone' has been deprecated from provider version 1.122.0. New field 'zone_id' instead
         * 
         */
        @Deprecated /* Field 'availability_zone' has been deprecated from provider version 1.122.0. New field 'zone_id' instead */
        public Builder availabilityZone(String availabilityZone) {
            return availabilityZone(Output.of(availabilityZone));
        }

        /**
         * @param category Category of the disk. Valid values are `cloud`, `cloud_efficiency`, `cloud_ssd`, `cloud_essd`, `cloud_auto`, `cloud_essd_entry`. Default is `cloud_efficiency`.
         * 
         * @return builder
         * 
         */
        public Builder category(@Nullable Output category) {
            $.category = category;
            return this;
        }

        /**
         * @param category Category of the disk. Valid values are `cloud`, `cloud_efficiency`, `cloud_ssd`, `cloud_essd`, `cloud_auto`, `cloud_essd_entry`. Default is `cloud_efficiency`.
         * 
         * @return builder
         * 
         */
        public Builder category(String category) {
            return category(Output.of(category));
        }

        /**
         * @param deleteAutoSnapshot Indicates whether the automatic snapshot is deleted when the disk is released. Default value: `false`.
         * 
         * @return builder
         * 
         */
        public Builder deleteAutoSnapshot(@Nullable Output deleteAutoSnapshot) {
            $.deleteAutoSnapshot = deleteAutoSnapshot;
            return this;
        }

        /**
         * @param deleteAutoSnapshot Indicates whether the automatic snapshot is deleted when the disk is released. Default value: `false`.
         * 
         * @return builder
         * 
         */
        public Builder deleteAutoSnapshot(Boolean deleteAutoSnapshot) {
            return deleteAutoSnapshot(Output.of(deleteAutoSnapshot));
        }

        /**
         * @param deleteWithInstance Indicates whether the disk is released together with the instance. Default value: `false`.
         * 
         * @return builder
         * 
         */
        public Builder deleteWithInstance(@Nullable Output deleteWithInstance) {
            $.deleteWithInstance = deleteWithInstance;
            return this;
        }

        /**
         * @param deleteWithInstance Indicates whether the disk is released together with the instance. Default value: `false`.
         * 
         * @return builder
         * 
         */
        public Builder deleteWithInstance(Boolean deleteWithInstance) {
            return deleteWithInstance(Output.of(deleteWithInstance));
        }

        /**
         * @param description Description of the disk. This description can have a string of 2 to 256 characters, It cannot begin with http:// or https://. Default value is null.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description Description of the disk. This description can have a string of 2 to 256 characters, It cannot begin with http:// or https://. Default value is null.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param diskName Name of the ECS disk. This name can have a string of 2 to 128 characters, must contain only alphanumeric characters or hyphens, such as "-",".","_", and must not begin or end with a hyphen, and must not begin with `http://` or `https://`. Default value is `null`.
         * 
         * @return builder
         * 
         */
        public Builder diskName(@Nullable Output diskName) {
            $.diskName = diskName;
            return this;
        }

        /**
         * @param diskName Name of the ECS disk. This name can have a string of 2 to 128 characters, must contain only alphanumeric characters or hyphens, such as "-",".","_", and must not begin or end with a hyphen, and must not begin with `http://` or `https://`. Default value is `null`.
         * 
         * @return builder
         * 
         */
        public Builder diskName(String diskName) {
            return diskName(Output.of(diskName));
        }

        /**
         * @param dryRun Specifies whether to check the validity of the request without actually making the request.request Default value: false. Valid values:
         * 
         * @return builder
         * 
         */
        public Builder dryRun(@Nullable Output dryRun) {
            $.dryRun = dryRun;
            return this;
        }

        /**
         * @param dryRun Specifies whether to check the validity of the request without actually making the request.request Default value: false. Valid values:
         * 
         * @return builder
         * 
         */
        public Builder dryRun(Boolean dryRun) {
            return dryRun(Output.of(dryRun));
        }

        /**
         * @param enableAutoSnapshot Indicates whether to enable creating snapshot automatically.
         * 
         * @return builder
         * 
         */
        public Builder enableAutoSnapshot(@Nullable Output enableAutoSnapshot) {
            $.enableAutoSnapshot = enableAutoSnapshot;
            return this;
        }

        /**
         * @param enableAutoSnapshot Indicates whether to enable creating snapshot automatically.
         * 
         * @return builder
         * 
         */
        public Builder enableAutoSnapshot(Boolean enableAutoSnapshot) {
            return enableAutoSnapshot(Output.of(enableAutoSnapshot));
        }

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

        public Builder encryptAlgorithm(String encryptAlgorithm) {
            return encryptAlgorithm(Output.of(encryptAlgorithm));
        }

        /**
         * @param encrypted If true, the disk will be encrypted, conflict with `snapshot_id`.
         * 
         * @return builder
         * 
         */
        public Builder encrypted(@Nullable Output encrypted) {
            $.encrypted = encrypted;
            return this;
        }

        /**
         * @param encrypted If true, the disk will be encrypted, conflict with `snapshot_id`.
         * 
         * @return builder
         * 
         */
        public Builder encrypted(Boolean encrypted) {
            return encrypted(Output.of(encrypted));
        }

        /**
         * @param instanceId The ID of the instance to which the created subscription disk is automatically attached.
         * * After you specify the instance ID, the specified `resource_group_id`, `tags`, and `kms_key_id` parameters are ignored.
         * * One of the `zone_id` and `instance_id` must be set but can not be set at the same time.
         * 
         * @return builder
         * 
         */
        public Builder instanceId(@Nullable Output instanceId) {
            $.instanceId = instanceId;
            return this;
        }

        /**
         * @param instanceId The ID of the instance to which the created subscription disk is automatically attached.
         * * After you specify the instance ID, the specified `resource_group_id`, `tags`, and `kms_key_id` parameters are ignored.
         * * One of the `zone_id` and `instance_id` must be set but can not be set at the same time.
         * 
         * @return builder
         * 
         */
        public Builder instanceId(String instanceId) {
            return instanceId(Output.of(instanceId));
        }

        /**
         * @param kmsKeyId The ID of the KMS key corresponding to the data disk, The specified parameter `Encrypted` must be `true` when KmsKeyId is not empty.
         * 
         * @return builder
         * 
         */
        public Builder kmsKeyId(@Nullable Output kmsKeyId) {
            $.kmsKeyId = kmsKeyId;
            return this;
        }

        /**
         * @param kmsKeyId The ID of the KMS key corresponding to the data disk, The specified parameter `Encrypted` must be `true` when KmsKeyId is not empty.
         * 
         * @return builder
         * 
         */
        public Builder kmsKeyId(String kmsKeyId) {
            return kmsKeyId(Output.of(kmsKeyId));
        }

        /**
         * @param name Field `name` has been deprecated from provider version 1.122.0. New field `disk_name` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'name' has been deprecated from provider version 1.122.0. New field 'disk_name' instead.
         * 
         */
        @Deprecated /* Field 'name' has been deprecated from provider version 1.122.0. New field 'disk_name' instead. */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name Field `name` has been deprecated from provider version 1.122.0. New field `disk_name` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'name' has been deprecated from provider version 1.122.0. New field 'disk_name' instead.
         * 
         */
        @Deprecated /* Field 'name' has been deprecated from provider version 1.122.0. New field 'disk_name' instead. */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param paymentType Payment method for disk. Valid values: `PayAsYouGo`, `Subscription`. Default to `PayAsYouGo`. If you want to change the disk payment type, the `instance_id` is required.
         * 
         * @return builder
         * 
         */
        public Builder paymentType(@Nullable Output paymentType) {
            $.paymentType = paymentType;
            return this;
        }

        /**
         * @param paymentType Payment method for disk. Valid values: `PayAsYouGo`, `Subscription`. Default to `PayAsYouGo`. If you want to change the disk payment type, the `instance_id` is required.
         * 
         * @return builder
         * 
         */
        public Builder paymentType(String paymentType) {
            return paymentType(Output.of(paymentType));
        }

        /**
         * @param performanceLevel Specifies the performance level of an ESSD when you create the ESSD. Valid values:
         * * `PL1`: A single ESSD delivers up to 50,000 random read/write IOPS.
         * * `PL2`: A single ESSD delivers up to 100,000 random read/write IOPS.
         * * `PL3`: A single ESSD delivers up to 1,000,000 random read/write IOPS.
         * 
         * @return builder
         * 
         */
        public Builder performanceLevel(@Nullable Output performanceLevel) {
            $.performanceLevel = performanceLevel;
            return this;
        }

        /**
         * @param performanceLevel Specifies the performance level of an ESSD when you create the ESSD. Valid values:
         * * `PL1`: A single ESSD delivers up to 50,000 random read/write IOPS.
         * * `PL2`: A single ESSD delivers up to 100,000 random read/write IOPS.
         * * `PL3`: A single ESSD delivers up to 1,000,000 random read/write IOPS.
         * 
         * @return builder
         * 
         */
        public Builder performanceLevel(String performanceLevel) {
            return performanceLevel(Output.of(performanceLevel));
        }

        /**
         * @param resourceGroupId The Id of resource group which the disk belongs. This attribute only supports adding or updating, not destroying.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupId(@Nullable Output resourceGroupId) {
            $.resourceGroupId = resourceGroupId;
            return this;
        }

        /**
         * @param resourceGroupId The Id of resource group which the disk belongs. This attribute only supports adding or updating, not destroying.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupId(String resourceGroupId) {
            return resourceGroupId(Output.of(resourceGroupId));
        }

        /**
         * @param size The size of the disk in GiBs. When resize the disk, the new size must be greater than the former value, or you would get an error `InvalidDiskSize.TooSmall`.
         * 
         * @return builder
         * 
         */
        public Builder size(@Nullable Output size) {
            $.size = size;
            return this;
        }

        /**
         * @param size The size of the disk in GiBs. When resize the disk, the new size must be greater than the former value, or you would get an error `InvalidDiskSize.TooSmall`.
         * 
         * @return builder
         * 
         */
        public Builder size(Integer size) {
            return size(Output.of(size));
        }

        /**
         * @param snapshotId A snapshot to base the disk off of. If the disk size required by snapshot is greater than `size`, the `size` will be ignored, conflict with `encrypted`.
         * 
         * @return builder
         * 
         */
        public Builder snapshotId(@Nullable Output snapshotId) {
            $.snapshotId = snapshotId;
            return this;
        }

        /**
         * @param snapshotId A snapshot to base the disk off of. If the disk size required by snapshot is greater than `size`, the `size` will be ignored, conflict with `encrypted`.
         * 
         * @return builder
         * 
         */
        public Builder snapshotId(String snapshotId) {
            return snapshotId(Output.of(snapshotId));
        }

        /**
         * @param storageSetId The ID of the storage set.
         * 
         * @return builder
         * 
         */
        public Builder storageSetId(@Nullable Output storageSetId) {
            $.storageSetId = storageSetId;
            return this;
        }

        /**
         * @param storageSetId The ID of the storage set.
         * 
         * @return builder
         * 
         */
        public Builder storageSetId(String storageSetId) {
            return storageSetId(Output.of(storageSetId));
        }

        /**
         * @param storageSetPartitionNumber The number of partitions in the storage set.
         * 
         * @return builder
         * 
         */
        public Builder storageSetPartitionNumber(@Nullable Output storageSetPartitionNumber) {
            $.storageSetPartitionNumber = storageSetPartitionNumber;
            return this;
        }

        /**
         * @param storageSetPartitionNumber The number of partitions in the storage set.
         * 
         * @return builder
         * 
         */
        public Builder storageSetPartitionNumber(Integer storageSetPartitionNumber) {
            return storageSetPartitionNumber(Output.of(storageSetPartitionNumber));
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param type The type to expand cloud disks. Valid Values: `online`, `offline`. Default to `offline`.
         * 
         * @return builder
         * 
         */
        public Builder type(@Nullable Output type) {
            $.type = type;
            return this;
        }

        /**
         * @param type The type to expand cloud disks. Valid Values: `online`, `offline`. Default to `offline`.
         * 
         * @return builder
         * 
         */
        public Builder type(String type) {
            return type(Output.of(type));
        }

        /**
         * @param zoneId ID of the free zone to which the disk belongs. One of the `zone_id` and `instance_id` must be set but can not be set at the same time.
         * 
         * @return builder
         * 
         */
        public Builder zoneId(@Nullable Output zoneId) {
            $.zoneId = zoneId;
            return this;
        }

        /**
         * @param zoneId ID of the free zone to which the disk belongs. One of the `zone_id` and `instance_id` must be set but can not be set at the same time.
         * 
         * @return builder
         * 
         */
        public Builder zoneId(String zoneId) {
            return zoneId(Output.of(zoneId));
        }

        public EcsDiskArgs build() {
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy