<gh_stars>0// *** 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.Cvm
{
    /// <summary>
    /// Provides a resource to create a cvm chc_config
    /// 
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using Pulumi;
    /// using Tencentcloud = TencentCloudIAC.PulumiPackage.Tencentcloud;
    /// 
    /// class MyStack : Stack
    /// {
    ///     public MyStack()
    ///     {
    ///         var chcConfig = new Tencentcloud.Cvm.ChcConfig("chcConfig", new Tencentcloud.Cvm.ChcConfigArgs
    ///         {
    ///             BmcSecurityGroupIds = 
    ///             {
    ///                 "sg-xxxxxx",
    ///             },
    ///             BmcUser = "admin",
    ///             BmcVirtualPrivateCloud = new Tencentcloud.Cvm.Inputs.ChcConfigBmcVirtualPrivateCloudArgs
    ///             {
    ///                 SubnetId = "subnet-xxxxxx",
    ///                 VpcId = "vpc-xxxxxx",
    ///             },
    ///             ChcId = "chc-xxxxxx",
    ///             DeploySecurityGroupIds = 
    ///             {
    ///                 "sg-xxxxxx",
    ///             },
    ///             DeployVirtualPrivateCloud = new Tencentcloud.Cvm.Inputs.ChcConfigDeployVirtualPrivateCloudArgs
    ///             {
    ///                 SubnetId = "subnet-xxxxxx",
    ///                 VpcId = "vpc-xxxxxx",
    ///             },
    ///             InstanceName = "xxxxxx",
    ///             Password = "xxxxxx",
    ///         });
    ///     }
    /// 
    /// }
    /// ```
    /// 
    /// ## Import
    /// 
    /// cvm chc_config can be imported using the id, e.g.
    /// 
    /// ```sh
    ///  $ pulumi import tencentcloud:Cvm/chcConfig:ChcConfig chc_config chc_config_id
    /// ```
    /// </summary>
    [TencentcloudResourceType("tencentcloud:Cvm/chcConfig:ChcConfig")]
    public partial class ChcConfig : Pulumi.CustomResource
    {
        /// <summary>
        /// Out-of-band network security group list.
        /// </summary>
        [Output("bmcSecurityGroupIds")]
        public Output<ImmutableArray<string>> BmcSecurityGroupIds { get; private set; } = null!;

        /// <summary>
        /// Valid characters: Letters, numbers, hyphens and underscores. Only set when update password.
        /// </summary>
        [Output("bmcUser")]
        public Output<string?> BmcUser { get; private set; } = null!;

        /// <summary>
        /// Out-of-band network information.
        /// </summary>
        [Output("bmcVirtualPrivateCloud")]
        public Output<Outputs.ChcConfigBmcVirtualPrivateCloud> BmcVirtualPrivateCloud { get; private set; } = null!;

        /// <summary>
        /// CHC host ID.
        /// </summary>
        [Output("chcId")]
        public Output<string> ChcId { get; private set; } = null!;

        /// <summary>
        /// Deployment network security group list.
        /// </summary>
        [Output("deploySecurityGroupIds")]
        public Output<ImmutableArray<string>> DeploySecurityGroupIds { get; private set; } = null!;

        /// <summary>
        /// Deployment network information.
        /// </summary>
        [Output("deployVirtualPrivateCloud")]
        public Output<Outputs.ChcConfigDeployVirtualPrivateCloud> DeployVirtualPrivateCloud { get; private set; } = null!;

        /// <summary>
        /// Server type.
        /// </summary>
        [Output("deviceType")]
        public Output<string> DeviceType { get; private set; } = null!;

        /// <summary>
        /// CHC host name.
        /// </summary>
        [Output("instanceName")]
        public Output<string> InstanceName { get; private set; } = null!;

        /// <summary>
        /// The password can contain 8 to 16 characters, including letters, numbers and special symbols (()`~!@#$%^&amp;amp;amp;*-+=_|{}).
        /// </summary>
        [Output("password")]
        public Output<string?> Password { get; private set; } = null!;


        /// <summary>
        /// Create a ChcConfig resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public ChcConfig(string name, ChcConfigArgs args, CustomResourceOptions? options = null)
            : base("tencentcloud:Cvm/chcConfig:ChcConfig", name, args ?? new ChcConfigArgs(), MakeResourceOptions(options, ""))
        {
        }

        private ChcConfig(string name, Input<string> id, ChcConfigState? state = null, CustomResourceOptions? options = null)
            : base("tencentcloud:Cvm/chcConfig:ChcConfig", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/tencentcloudstack",
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing ChcConfig resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static ChcConfig Get(string name, Input<string> id, ChcConfigState? state = null, CustomResourceOptions? options = null)
        {
            return new ChcConfig(name, id, state, options);
        }
    }

    public sealed class ChcConfigArgs : Pulumi.ResourceArgs
    {
        [Input("bmcSecurityGroupIds")]
        private InputList<string>? _bmcSecurityGroupIds;

        /// <summary>
        /// Out-of-band network security group list.
        /// </summary>
        public InputList<string> BmcSecurityGroupIds
        {
            get => _bmcSecurityGroupIds ?? (_bmcSecurityGroupIds = new InputList<string>());
            set => _bmcSecurityGroupIds = value;
        }

        /// <summary>
        /// Valid characters: Letters, numbers, hyphens and underscores. Only set when update password.
        /// </summary>
        [Input("bmcUser")]
        public Input<string>? BmcUser { get; set; }

        /// <summary>
        /// Out-of-band network information.
        /// </summary>
        [Input("bmcVirtualPrivateCloud")]
        public Input<Inputs.ChcConfigBmcVirtualPrivateCloudArgs>? BmcVirtualPrivateCloud { get; set; }

        /// <summary>
        /// CHC host ID.
        /// </summary>
        [Input("chcId", required: true)]
        public Input<string> ChcId { get; set; } = null!;

        [Input("deploySecurityGroupIds")]
        private InputList<string>? _deploySecurityGroupIds;

        /// <summary>
        /// Deployment network security group list.
        /// </summary>
        public InputList<string> DeploySecurityGroupIds
        {
            get => _deploySecurityGroupIds ?? (_deploySecurityGroupIds = new InputList<string>());
            set => _deploySecurityGroupIds = value;
        }

        /// <summary>
        /// Deployment network information.
        /// </summary>
        [Input("deployVirtualPrivateCloud")]
        public Input<Inputs.ChcConfigDeployVirtualPrivateCloudArgs>? DeployVirtualPrivateCloud { get; set; }

        /// <summary>
        /// Server type.
        /// </summary>
        [Input("deviceType")]
        public Input<string>? DeviceType { get; set; }

        /// <summary>
        /// CHC host name.
        /// </summary>
        [Input("instanceName")]
        public Input<string>? InstanceName { get; set; }

        /// <summary>
        /// The password can contain 8 to 16 characters, including letters, numbers and special symbols (()`~!@#$%^&amp;amp;amp;*-+=_|{}).
        /// </summary>
        [Input("password")]
        public Input<string>? Password { get; set; }

        public ChcConfigArgs()
        {
        }
    }

    public sealed class ChcConfigState : Pulumi.ResourceArgs
    {
        [Input("bmcSecurityGroupIds")]
        private InputList<string>? _bmcSecurityGroupIds;

        /// <summary>
        /// Out-of-band network security group list.
        /// </summary>
        public InputList<string> BmcSecurityGroupIds
        {
            get => _bmcSecurityGroupIds ?? (_bmcSecurityGroupIds = new InputList<string>());
            set => _bmcSecurityGroupIds = value;
        }

        /// <summary>
        /// Valid characters: Letters, numbers, hyphens and underscores. Only set when update password.
        /// </summary>
        [Input("bmcUser")]
        public Input<string>? BmcUser { get; set; }

        /// <summary>
        /// Out-of-band network information.
        /// </summary>
        [Input("bmcVirtualPrivateCloud")]
        public Input<Inputs.ChcConfigBmcVirtualPrivateCloudGetArgs>? BmcVirtualPrivateCloud { get; set; }

        /// <summary>
        /// CHC host ID.
        /// </summary>
        [Input("chcId")]
        public Input<string>? ChcId { get; set; }

        [Input("deploySecurityGroupIds")]
        private InputList<string>? _deploySecurityGroupIds;

        /// <summary>
        /// Deployment network security group list.
        /// </summary>
        public InputList<string> DeploySecurityGroupIds
        {
            get => _deploySecurityGroupIds ?? (_deploySecurityGroupIds = new InputList<string>());
            set => _deploySecurityGroupIds = value;
        }

        /// <summary>
        /// Deployment network information.
        /// </summary>
        [Input("deployVirtualPrivateCloud")]
        public Input<Inputs.ChcConfigDeployVirtualPrivateCloudGetArgs>? DeployVirtualPrivateCloud { get; set; }

        /// <summary>
        /// Server type.
        /// </summary>
        [Input("deviceType")]
        public Input<string>? DeviceType { get; set; }

        /// <summary>
        /// CHC host name.
        /// </summary>
        [Input("instanceName")]
        public Input<string>? InstanceName { get; set; }

        /// <summary>
        /// The password can contain 8 to 16 characters, including letters, numbers and special symbols (()`~!@#$%^&amp;amp;amp;*-+=_|{}).
        /// </summary>
        [Input("password")]
        public Input<string>? Password { get; set; }

        public ChcConfigState()
        {
        }
    }
}
