// *** 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.Kubernetes.Outputs
{

    [OutputType]
    public sealed class ClusterMasterConfig
    {
        /// <summary>
        /// Indicates which availability zone will be used.
        /// </summary>
        public readonly string? AvailabilityZone;
        /// <summary>
        /// bandwidth package id. if user is standard user, then the bandwidth_package_id is needed, or default has bandwidth_package_id.
        /// </summary>
        public readonly string? BandwidthPackageId;
        /// <summary>
        /// CAM role name authorized to access.
        /// </summary>
        public readonly string? CamRoleName;
        /// <summary>
        /// Number of cvm.
        /// </summary>
        public readonly int? Count;
        /// <summary>
        /// Configurations of data disk.
        /// </summary>
        public readonly ImmutableArray<Outputs.ClusterMasterConfigDataDisk> DataDisks;
        /// <summary>
        /// Indicate to set desired pod number in node. valid when enable_customized_pod_cidr=true, and it override `[globe_]desired_pod_num` for current node. Either all the fields `desired_pod_num` or none.
        /// </summary>
        public readonly int? DesiredPodNum;
        /// <summary>
        /// Disaster recover groups to which a CVM instance belongs. Only support maximum 1.
        /// </summary>
        public readonly string? DisasterRecoverGroupIds;
        /// <summary>
        /// To specify whether to enable cloud monitor service. Default is TRUE.
        /// </summary>
        public readonly bool? EnhancedMonitorService;
        /// <summary>
        /// To specify whether to enable cloud security service. Default is TRUE.
        /// </summary>
        public readonly bool? EnhancedSecurityService;
        /// <summary>
        /// The host name of the attached instance. Dot (.) and dash (-) cannot be used as the first and last characters of HostName and cannot be used consecutively. Windows example: The length of the name character is [2, 15], letters (capitalization is not restricted), numbers and dashes (-) are allowed, dots (.) are not supported, and not all numbers are allowed. Examples of other types (Linux, etc.): The character length is [2, 60], and multiple dots are allowed. There is a segment between the dots. Each segment allows letters (with no limitation on capitalization), numbers and dashes (-).
        /// </summary>
        public readonly string? Hostname;
        /// <summary>
        /// Id of cvm hpc cluster.
        /// </summary>
        public readonly string? HpcClusterId;
        /// <summary>
        /// The valid image id, format of img-xxx.
        /// </summary>
        public readonly string? ImgId;
        /// <summary>
        /// The charge type of instance. Valid values are `PREPAID` and `POSTPAID_BY_HOUR`. The default is `POSTPAID_BY_HOUR`. Note: TencentCloud International only supports `POSTPAID_BY_HOUR`, `PREPAID` instance will not terminated after cluster deleted, and may not allow to delete before expired.
        /// </summary>
        public readonly string? InstanceChargeType;
        /// <summary>
        /// The tenancy (time unit is month) of the prepaid instance. NOTE: it only works when instance_charge_type is set to `PREPAID`. Valid values are `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `24`, `36`.
        /// </summary>
        public readonly int? InstanceChargeTypePrepaidPeriod;
        /// <summary>
        /// Auto renewal flag. Valid values: `NOTIFY_AND_AUTO_RENEW`: notify upon expiration and renew automatically, `NOTIFY_AND_MANUAL_RENEW`: notify upon expiration but do not renew automatically, `DISABLE_NOTIFY_AND_MANUAL_RENEW`: neither notify upon expiration nor renew automatically. Default value: `NOTIFY_AND_MANUAL_RENEW`. If this parameter is specified as `NOTIFY_AND_AUTO_RENEW`, the instance will be automatically renewed on a monthly basis if the account balance is sufficient. NOTE: it only works when instance_charge_type is set to `PREPAID`.
        /// </summary>
        public readonly string? InstanceChargeTypePrepaidRenewFlag;
        /// <summary>
        /// Name of the CVMs.
        /// </summary>
        public readonly string? InstanceName;
        /// <summary>
        /// Specified types of CVM instance.
        /// </summary>
        public readonly string InstanceType;
        /// <summary>
        /// Charge types for network traffic. Available values include `TRAFFIC_POSTPAID_BY_HOUR`.
        /// </summary>
        public readonly string? InternetChargeType;
        /// <summary>
        /// Max bandwidth of Internet access in Mbps. Default is 0.
        /// </summary>
        public readonly int? InternetMaxBandwidthOut;
        /// <summary>
        /// ID list of keys, should be set if `password` not set.
        /// </summary>
        public readonly string? KeyIds;
        /// <summary>
        /// Password to access, should be set if `key_ids` not set.
        /// </summary>
        public readonly string? Password;
        /// <summary>
        /// Specify whether to assign an Internet IP address.
        /// </summary>
        public readonly bool? PublicIpAssigned;
        /// <summary>
        /// Security groups to which a CVM instance belongs.
        /// </summary>
        public readonly ImmutableArray<string> SecurityGroupIds;
        /// <summary>
        /// Private network ID.
        /// </summary>
        public readonly string SubnetId;
        /// <summary>
        /// Volume of system disk in GB. Default is `50`.
        /// </summary>
        public readonly int? SystemDiskSize;
        /// <summary>
        /// System disk type. For more information on limits of system 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, `CLOUD_SSD`: SSD, `CLOUD_PREMIUM`: Premium Cloud Storage. NOTE: `CLOUD_BASIC`, `LOCAL_BASIC` and `LOCAL_SSD` are deprecated.
        /// </summary>
        public readonly string? SystemDiskType;
        /// <summary>
        /// ase64-encoded User Data text, the length limit is 16KB.
        /// </summary>
        public readonly string? UserData;

        [OutputConstructor]
        private ClusterMasterConfig(
            string? availabilityZone,

            string? bandwidthPackageId,

            string? camRoleName,

            int? count,

            ImmutableArray<Outputs.ClusterMasterConfigDataDisk> dataDisks,

            int? desiredPodNum,

            string? disasterRecoverGroupIds,

            bool? enhancedMonitorService,

            bool? enhancedSecurityService,

            string? hostname,

            string? hpcClusterId,

            string? imgId,

            string? instanceChargeType,

            int? instanceChargeTypePrepaidPeriod,

            string? instanceChargeTypePrepaidRenewFlag,

            string? instanceName,

            string instanceType,

            string? internetChargeType,

            int? internetMaxBandwidthOut,

            string? keyIds,

            string? password,

            bool? publicIpAssigned,

            ImmutableArray<string> securityGroupIds,

            string subnetId,

            int? systemDiskSize,

            string? systemDiskType,

            string? userData)
        {
            AvailabilityZone = availabilityZone;
            BandwidthPackageId = bandwidthPackageId;
            CamRoleName = camRoleName;
            Count = count;
            DataDisks = dataDisks;
            DesiredPodNum = desiredPodNum;
            DisasterRecoverGroupIds = disasterRecoverGroupIds;
            EnhancedMonitorService = enhancedMonitorService;
            EnhancedSecurityService = enhancedSecurityService;
            Hostname = hostname;
            HpcClusterId = hpcClusterId;
            ImgId = imgId;
            InstanceChargeType = instanceChargeType;
            InstanceChargeTypePrepaidPeriod = instanceChargeTypePrepaidPeriod;
            InstanceChargeTypePrepaidRenewFlag = instanceChargeTypePrepaidRenewFlag;
            InstanceName = instanceName;
            InstanceType = instanceType;
            InternetChargeType = internetChargeType;
            InternetMaxBandwidthOut = internetMaxBandwidthOut;
            KeyIds = keyIds;
            Password = password;
            PublicIpAssigned = publicIpAssigned;
            SecurityGroupIds = securityGroupIds;
            SubnetId = subnetId;
            SystemDiskSize = systemDiskSize;
            SystemDiskType = systemDiskType;
            UserData = userData;
        }
    }
}
