// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.AliCloud.Ecs.Outputs
{

    [OutputType]
    public sealed class EcsInstanceSetDataDisk
    {
        /// <summary>
        /// The ID of the automatic snapshot policy applied to the system disk.
        /// </summary>
        public readonly string? AutoSnapshotPolicyId;
        /// <summary>
        /// The category of the disk. Valid values: `cloud_efficiency`, `cloud_ssd`, `cloud_essd`, `cloud`.
        /// </summary>
        public readonly string? DiskCategory;
        /// <summary>
        /// The description of the data disk.
        /// </summary>
        public readonly string? DiskDescription;
        /// <summary>
        /// The name of the data disk.
        /// </summary>
        public readonly string? DiskName;
        /// <summary>
        /// The size of the data disk. Unit: GiB.
        /// - When `disk_category` is `cloud_efficiency`, Valid values: `20` to `32768`.
        /// - When `disk_category` is `cloud_ssd`, Valid values: `20` to `32768`.
        /// - When `disk_category` is `cloud_essd`, Valid values: `20` to `32768`.
        /// - When `disk_category` is `cloud`, Valid values: `5` to `200`.
        /// </summary>
        public readonly int DiskSize;
        public readonly bool? Encrypted;
        /// <summary>
        /// The KMS key ID corresponding to the data disk.
        /// </summary>
        public readonly string? KmsKeyId;
        /// <summary>
        /// The performance level of the ESSD used as data disk. Valid values: `PL0`, `PL1`, `PL2`, `PL3`.
        /// </summary>
        public readonly string? PerformanceLevel;
        /// <summary>
        /// The snapshot ID used to initialize the data disk. If the size specified by snapshot is greater that the size of the disk, use the size specified by snapshot as the size of the data disk.
        /// </summary>
        public readonly string? SnapshotId;

        [OutputConstructor]
        private EcsInstanceSetDataDisk(
            string? autoSnapshotPolicyId,

            string? diskCategory,

            string? diskDescription,

            string? diskName,

            int diskSize,

            bool? encrypted,

            string? kmsKeyId,

            string? performanceLevel,

            string? snapshotId)
        {
            AutoSnapshotPolicyId = autoSnapshotPolicyId;
            DiskCategory = diskCategory;
            DiskDescription = diskDescription;
            DiskName = diskName;
            DiskSize = diskSize;
            Encrypted = encrypted;
            KmsKeyId = kmsKeyId;
            PerformanceLevel = performanceLevel;
            SnapshotId = snapshotId;
        }
    }
}
