// *** 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;
using Pulumi;

namespace TencentCloudIAC.PulumiPackage.Tencentcloud.Instance.Outputs
{

    [OutputType]
    public sealed class InstanceDataDisk
    {
        /// <summary>
        /// Data disk ID used to initialize the data disk. When data disk type is `LOCAL_BASIC` and `LOCAL_SSD`, disk id is not supported.
        /// </summary>
        public readonly string? DataDiskId;
        /// <summary>
        /// Size of the data disk, and unit is GB.
        /// </summary>
        public readonly int DataDiskSize;
        /// <summary>
        /// Snapshot ID of the data disk. The selected data disk snapshot size must be smaller than the data disk size.
        /// </summary>
        public readonly string? DataDiskSnapshotId;
        /// <summary>
        /// Data disk type. For more information about limits on different data disk types, see [Storage Overview](https://intl.cloud.tencent.com/document/product/213/4952). Valid values: LOCAL_BASIC: local disk, LOCAL_SSD: local SSD disk, LOCAL_NVME: local NVME disk, specified in the InstanceType, LOCAL_PRO: local HDD disk, specified in the InstanceType, CLOUD_BASIC: HDD cloud disk, CLOUD_PREMIUM: Premium Cloud Storage, CLOUD_SSD: SSD, CLOUD_HSSD: Enhanced SSD, CLOUD_TSSD: Tremendous SSD, CLOUD_BSSD: Balanced SSD.
        /// </summary>
        public readonly string DataDiskType;
        /// <summary>
        /// Decides whether the disk is deleted with instance(only applied to `CLOUD_BASIC`, `CLOUD_SSD` and `CLOUD_PREMIUM` disk with `POSTPAID_BY_HOUR` instance), default is true.
        /// </summary>
        public readonly bool? DeleteWithInstance;
        /// <summary>
        /// Decides whether the disk is encrypted. Default is `false`.
        /// </summary>
        public readonly bool? Encrypt;
        /// <summary>
        /// Add extra performance to the data disk. Only works when disk type is `CLOUD_TSSD` or `CLOUD_HSSD`.
        /// </summary>
        public readonly int? ThroughputPerformance;

        [OutputConstructor]
        private InstanceDataDisk(
            string? dataDiskId,

            int dataDiskSize,

            string? dataDiskSnapshotId,

            string dataDiskType,

            bool? deleteWithInstance,

            bool? encrypt,

            int? throughputPerformance)
        {
            DataDiskId = dataDiskId;
            DataDiskSize = dataDiskSize;
            DataDiskSnapshotId = dataDiskSnapshotId;
            DataDiskType = dataDiskType;
            DeleteWithInstance = deleteWithInstance;
            Encrypt = encrypt;
            ThroughputPerformance = throughputPerformance;
        }
    }
}
