# coding=utf-8
# *** 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! ***

import json
import warnings
import pulumi
import pulumi.runtime
from typing import Union
from .. import utilities, tables

class LaunchTemplate(pulumi.CustomResource):
    auto_release_time: pulumi.Output[str]
    """
    Instance auto release time. The time is presented using the ISO8601 standard and in UTC time. The format is  YYYY-MM-DDTHH:MM:SSZ.
    """
    data_disks: pulumi.Output[list]
    """
    The list of data disks created with instance.

      * `category` (`str`) - The category of the disk:
        - cloud: Basic cloud disk.
        - cloud_efficiency: Ultra cloud disk.
        - cloud_ssd: SSD cloud Disks.
        - ephemeral_ssd: local SSD Disks
        - cloud_essd: ESSD cloud Disks.
      * `delete_with_instance` (`bool`) - Delete this data disk when the instance is destroyed. It only works on cloud, cloud_efficiency, cloud_ssd and cloud_essd disk. If the category of this data disk was ephemeral_ssd, please don't set this param.
      * `description` (`str`) - The description of the data disk.
      * `encrypted` (`bool`)
      * `name` (`str`) - The name of the data disk.
      * `size` (`float`) - The size of the data disk.
        - cloud：[5, 2000]
        - cloud_efficiency：[20, 32768]
        - cloud_ssd：[20, 32768]
        - cloud_essd：[20, 32768]
        - ephemeral_ssd: [5, 800]
      * `snapshot_id` (`str`) - 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.
    """
    description: pulumi.Output[str]
    """
    The description of the data disk.
    """
    host_name: pulumi.Output[str]
    """
    Instance host name.It cannot start or end with a period (.) or a hyphen (-) and it cannot have two or more consecutive periods (.) or hyphens (-).For Windows: The host name can be [2, 15] characters in length. It can contain A-Z, a-z, numbers, periods (.), and hyphens (-). It cannot only contain numbers. For other operating systems: The host name can be [2, 64] characters in length. It can be segments separated by periods (.). It can contain A-Z, a-z, numbers, and hyphens (-).
    """
    image_id: pulumi.Output[str]
    """
    Image ID.
    """
    image_owner_alias: pulumi.Output[str]
    instance_charge_type: pulumi.Output[str]
    """
    Billing methods. Optional values:
    - PrePaid: Monthly, or annual subscription. Make sure that your registered credit card is invalid or you have insufficient balance in your PayPal account. Otherwise, InvalidPayMethod error may occur.
    - PostPaid: Pay-As-You-Go.
    """
    instance_name: pulumi.Output[str]
    """
    The name of the instance. The name is a string of 2 to 128 characters. It must begin with an English or a Chinese character. It can contain A-Z, a-z, Chinese characters, numbers, periods (.), colons (:), underscores (_), and hyphens (-).
    """
    instance_type: pulumi.Output[str]
    """
    Instance type. For more information, call resource_alicloud_instances to obtain the latest instance type list.
    """
    internet_charge_type: pulumi.Output[str]
    """
    Internet bandwidth billing method. Optional values: PayByTraffic.
    """
    internet_max_bandwidth_in: pulumi.Output[float]
    """
    The maximum inbound bandwidth from the Internet network, measured in Mbit/s. Value range: [1, 200].
    """
    internet_max_bandwidth_out: pulumi.Output[float]
    """
    Maximum outbound bandwidth from the Internet, its unit of measurement is Mbit/s. Value range: [0, 100].
    """
    io_optimized: pulumi.Output[str]
    """
    Whether it is an I/O-optimized instance or not. Optional values:
    - none
    - optimized
    """
    key_pair_name: pulumi.Output[str]
    """
    The name of the key pair.
    - Ignore this parameter for Windows instances. It is null by default. Even if you enter this parameter, only the  Password content is used.
    - The password logon method for Linux instances is set to forbidden upon initialization.
    """
    name: pulumi.Output[str]
    """
    The name of the data disk.
    """
    network_interfaces: pulumi.Output[dict]
    """
    The list of network interfaces created with instance.

      * `description` (`str`) - The description of the data disk.
      * `name` (`str`) - The name of the data disk.
      * `primaryIp` (`str`) - The primary private IP address of the ENI.
      * `security_group_id` (`str`) - The security group ID must be one in the same VPC.
      * `vswitch_id` (`str`) - The VSwitch ID for ENI. The instance must be in the same zone of the same VPC network as the ENI, but they may belong to different VSwitches.
    """
    network_type: pulumi.Output[str]
    """
    Network type of the instance. Value options: Classic | VPC.
    """
    ram_role_name: pulumi.Output[str]
    """
    The RAM role name of the instance. You can use the RAM API ListRoles to query instance RAM role names.
    """
    resource_group_id: pulumi.Output[str]
    security_enhancement_strategy: pulumi.Output[str]
    """
    Whether or not to activate the security enhancement feature and install network security software free of charge. Optional values: Active | Deactive.
    """
    security_group_id: pulumi.Output[str]
    """
    The security group ID must be one in the same VPC.
    """
    spot_price_limit: pulumi.Output[float]
    spot_strategy: pulumi.Output[str]
    """
    The spot strategy for a Pay-As-You-Go instance. This parameter is valid and required only when InstanceChargeType is set to PostPaid. Value range:
    - NoSpot: Normal Pay-As-You-Go instance.
    - SpotWithPriceLimit: Sets the maximum price for a spot instance.
    - SpotAsPriceGo: The system automatically calculates the price. The maximum value is the Pay-As-You-Go price.
    """
    system_disk_category: pulumi.Output[str]
    """
    The category of the system disk. System disk type. Optional values:
    - cloud: Basic cloud disk.
    - cloud_efficiency: Ultra cloud disk.
    - cloud_ssd: SSD cloud Disks.
    - ephemeral_ssd: local SSD Disks
    - cloud_essd: ESSD cloud Disks.
    """
    system_disk_description: pulumi.Output[str]
    """
    System disk description. It cannot begin with http:// or https://.
    """
    system_disk_name: pulumi.Output[str]
    """
    System disk name. The name is a string of 2 to 128 characters. It must begin with an English or a Chinese character. It can contain A-Z, a-z, Chinese characters, numbers, periods (.), colons (:), underscores (_), and hyphens (-).
    """
    system_disk_size: pulumi.Output[float]
    """
    Size of the system disk, measured in GB. Value range: [20, 500].
    """
    tags: pulumi.Output[dict]
    """
    A mapping of tags to assign to the resource.
    - Key: It can be up to 64 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It cannot be a null string.
    - Value: It can be up to 128 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It can be a null string.
    """
    userdata: pulumi.Output[str]
    """
    User data of the instance, which is Base64-encoded. Size of the raw data cannot exceed 16 KB.
    """
    vpc_id: pulumi.Output[str]
    vswitch_id: pulumi.Output[str]
    """
    The VSwitch ID for ENI. The instance must be in the same zone of the same VPC network as the ENI, but they may belong to different VSwitches.
    """
    zone_id: pulumi.Output[str]
    """
    The zone ID of the instance.
    """
    def __init__(__self__, resource_name, opts=None, auto_release_time=None, data_disks=None, description=None, host_name=None, image_id=None, image_owner_alias=None, instance_charge_type=None, instance_name=None, instance_type=None, internet_charge_type=None, internet_max_bandwidth_in=None, internet_max_bandwidth_out=None, io_optimized=None, key_pair_name=None, name=None, network_interfaces=None, network_type=None, ram_role_name=None, resource_group_id=None, security_enhancement_strategy=None, security_group_id=None, spot_price_limit=None, spot_strategy=None, system_disk_category=None, system_disk_description=None, system_disk_name=None, system_disk_size=None, tags=None, userdata=None, vpc_id=None, vswitch_id=None, zone_id=None, __props__=None, __name__=None, __opts__=None):
        """
        Provides an ECS Launch Template resource.

        For information about Launch Template and how to use it, see [Launch Template](https://www.alibabacloud.com/help/doc-detail/73916.html).

        > This content is derived from https://github.com/terraform-providers/terraform-provider-alicloud/blob/master/website/docs/r/launch_template.html.markdown.

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] auto_release_time: Instance auto release time. The time is presented using the ISO8601 standard and in UTC time. The format is  YYYY-MM-DDTHH:MM:SSZ.
        :param pulumi.Input[list] data_disks: The list of data disks created with instance.
        :param pulumi.Input[str] description: The description of the data disk.
        :param pulumi.Input[str] host_name: Instance host name.It cannot start or end with a period (.) or a hyphen (-) and it cannot have two or more consecutive periods (.) or hyphens (-).For Windows: The host name can be [2, 15] characters in length. It can contain A-Z, a-z, numbers, periods (.), and hyphens (-). It cannot only contain numbers. For other operating systems: The host name can be [2, 64] characters in length. It can be segments separated by periods (.). It can contain A-Z, a-z, numbers, and hyphens (-).
        :param pulumi.Input[str] image_id: Image ID.
        :param pulumi.Input[str] instance_charge_type: Billing methods. Optional values:
               - PrePaid: Monthly, or annual subscription. Make sure that your registered credit card is invalid or you have insufficient balance in your PayPal account. Otherwise, InvalidPayMethod error may occur.
               - PostPaid: Pay-As-You-Go.
        :param pulumi.Input[str] instance_name: The name of the instance. The name is a string of 2 to 128 characters. It must begin with an English or a Chinese character. It can contain A-Z, a-z, Chinese characters, numbers, periods (.), colons (:), underscores (_), and hyphens (-).
        :param pulumi.Input[str] instance_type: Instance type. For more information, call resource_alicloud_instances to obtain the latest instance type list.
        :param pulumi.Input[str] internet_charge_type: Internet bandwidth billing method. Optional values: PayByTraffic.
        :param pulumi.Input[float] internet_max_bandwidth_in: The maximum inbound bandwidth from the Internet network, measured in Mbit/s. Value range: [1, 200].
        :param pulumi.Input[float] internet_max_bandwidth_out: Maximum outbound bandwidth from the Internet, its unit of measurement is Mbit/s. Value range: [0, 100].
        :param pulumi.Input[str] io_optimized: Whether it is an I/O-optimized instance or not. Optional values:
               - none
               - optimized
        :param pulumi.Input[str] key_pair_name: The name of the key pair.
               - Ignore this parameter for Windows instances. It is null by default. Even if you enter this parameter, only the  Password content is used.
               - The password logon method for Linux instances is set to forbidden upon initialization.
        :param pulumi.Input[str] name: The name of the data disk.
        :param pulumi.Input[dict] network_interfaces: The list of network interfaces created with instance.
        :param pulumi.Input[str] network_type: Network type of the instance. Value options: Classic | VPC.
        :param pulumi.Input[str] ram_role_name: The RAM role name of the instance. You can use the RAM API ListRoles to query instance RAM role names.
        :param pulumi.Input[str] security_enhancement_strategy: Whether or not to activate the security enhancement feature and install network security software free of charge. Optional values: Active | Deactive.
        :param pulumi.Input[str] security_group_id: The security group ID must be one in the same VPC.
        :param pulumi.Input[str] spot_strategy: The spot strategy for a Pay-As-You-Go instance. This parameter is valid and required only when InstanceChargeType is set to PostPaid. Value range:
               - NoSpot: Normal Pay-As-You-Go instance.
               - SpotWithPriceLimit: Sets the maximum price for a spot instance.
               - SpotAsPriceGo: The system automatically calculates the price. The maximum value is the Pay-As-You-Go price.
        :param pulumi.Input[str] system_disk_category: The category of the system disk. System disk type. Optional values:
               - cloud: Basic cloud disk.
               - cloud_efficiency: Ultra cloud disk.
               - cloud_ssd: SSD cloud Disks.
               - ephemeral_ssd: local SSD Disks
               - cloud_essd: ESSD cloud Disks.
        :param pulumi.Input[str] system_disk_description: System disk description. It cannot begin with http:// or https://.
        :param pulumi.Input[str] system_disk_name: System disk name. The name is a string of 2 to 128 characters. It must begin with an English or a Chinese character. It can contain A-Z, a-z, Chinese characters, numbers, periods (.), colons (:), underscores (_), and hyphens (-).
        :param pulumi.Input[float] system_disk_size: Size of the system disk, measured in GB. Value range: [20, 500].
        :param pulumi.Input[dict] tags: A mapping of tags to assign to the resource.
               - Key: It can be up to 64 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It cannot be a null string.
               - Value: It can be up to 128 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It can be a null string.
        :param pulumi.Input[str] userdata: User data of the instance, which is Base64-encoded. Size of the raw data cannot exceed 16 KB.
        :param pulumi.Input[str] vswitch_id: The VSwitch ID for ENI. The instance must be in the same zone of the same VPC network as the ENI, but they may belong to different VSwitches.
        :param pulumi.Input[str] zone_id: The zone ID of the instance.

        The **data_disks** object supports the following:

          * `category` (`pulumi.Input[str]`) - The category of the disk:
            - cloud: Basic cloud disk.
            - cloud_efficiency: Ultra cloud disk.
            - cloud_ssd: SSD cloud Disks.
            - ephemeral_ssd: local SSD Disks
            - cloud_essd: ESSD cloud Disks.
          * `delete_with_instance` (`pulumi.Input[bool]`) - Delete this data disk when the instance is destroyed. It only works on cloud, cloud_efficiency, cloud_ssd and cloud_essd disk. If the category of this data disk was ephemeral_ssd, please don't set this param.
          * `description` (`pulumi.Input[str]`) - The description of the data disk.
          * `encrypted` (`pulumi.Input[bool]`)
          * `name` (`pulumi.Input[str]`) - The name of the data disk.
          * `size` (`pulumi.Input[float]`) - The size of the data disk.
            - cloud：[5, 2000]
            - cloud_efficiency：[20, 32768]
            - cloud_ssd：[20, 32768]
            - cloud_essd：[20, 32768]
            - ephemeral_ssd: [5, 800]
          * `snapshot_id` (`pulumi.Input[str]`) - 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.

        The **network_interfaces** object supports the following:

          * `description` (`pulumi.Input[str]`) - The description of the data disk.
          * `name` (`pulumi.Input[str]`) - The name of the data disk.
          * `primaryIp` (`pulumi.Input[str]`) - The primary private IP address of the ENI.
          * `security_group_id` (`pulumi.Input[str]`) - The security group ID must be one in the same VPC.
          * `vswitch_id` (`pulumi.Input[str]`) - The VSwitch ID for ENI. The instance must be in the same zone of the same VPC network as the ENI, but they may belong to different VSwitches.
        """
        if __name__ is not None:
            warnings.warn("explicit use of __name__ is deprecated", DeprecationWarning)
            resource_name = __name__
        if __opts__ is not None:
            warnings.warn("explicit use of __opts__ is deprecated, use 'opts' instead", DeprecationWarning)
            opts = __opts__
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = utilities.get_version()
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = dict()

            __props__['auto_release_time'] = auto_release_time
            __props__['data_disks'] = data_disks
            __props__['description'] = description
            __props__['host_name'] = host_name
            __props__['image_id'] = image_id
            __props__['image_owner_alias'] = image_owner_alias
            __props__['instance_charge_type'] = instance_charge_type
            __props__['instance_name'] = instance_name
            __props__['instance_type'] = instance_type
            __props__['internet_charge_type'] = internet_charge_type
            __props__['internet_max_bandwidth_in'] = internet_max_bandwidth_in
            __props__['internet_max_bandwidth_out'] = internet_max_bandwidth_out
            __props__['io_optimized'] = io_optimized
            __props__['key_pair_name'] = key_pair_name
            __props__['name'] = name
            __props__['network_interfaces'] = network_interfaces
            __props__['network_type'] = network_type
            __props__['ram_role_name'] = ram_role_name
            __props__['resource_group_id'] = resource_group_id
            __props__['security_enhancement_strategy'] = security_enhancement_strategy
            __props__['security_group_id'] = security_group_id
            __props__['spot_price_limit'] = spot_price_limit
            __props__['spot_strategy'] = spot_strategy
            __props__['system_disk_category'] = system_disk_category
            __props__['system_disk_description'] = system_disk_description
            __props__['system_disk_name'] = system_disk_name
            __props__['system_disk_size'] = system_disk_size
            __props__['tags'] = tags
            __props__['userdata'] = userdata
            __props__['vpc_id'] = vpc_id
            __props__['vswitch_id'] = vswitch_id
            __props__['zone_id'] = zone_id
        super(LaunchTemplate, __self__).__init__(
            'alicloud:ecs/launchTemplate:LaunchTemplate',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name, id, opts=None, auto_release_time=None, data_disks=None, description=None, host_name=None, image_id=None, image_owner_alias=None, instance_charge_type=None, instance_name=None, instance_type=None, internet_charge_type=None, internet_max_bandwidth_in=None, internet_max_bandwidth_out=None, io_optimized=None, key_pair_name=None, name=None, network_interfaces=None, network_type=None, ram_role_name=None, resource_group_id=None, security_enhancement_strategy=None, security_group_id=None, spot_price_limit=None, spot_strategy=None, system_disk_category=None, system_disk_description=None, system_disk_name=None, system_disk_size=None, tags=None, userdata=None, vpc_id=None, vswitch_id=None, zone_id=None):
        """
        Get an existing LaunchTemplate resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param str id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] auto_release_time: Instance auto release time. The time is presented using the ISO8601 standard and in UTC time. The format is  YYYY-MM-DDTHH:MM:SSZ.
        :param pulumi.Input[list] data_disks: The list of data disks created with instance.
        :param pulumi.Input[str] description: The description of the data disk.
        :param pulumi.Input[str] host_name: Instance host name.It cannot start or end with a period (.) or a hyphen (-) and it cannot have two or more consecutive periods (.) or hyphens (-).For Windows: The host name can be [2, 15] characters in length. It can contain A-Z, a-z, numbers, periods (.), and hyphens (-). It cannot only contain numbers. For other operating systems: The host name can be [2, 64] characters in length. It can be segments separated by periods (.). It can contain A-Z, a-z, numbers, and hyphens (-).
        :param pulumi.Input[str] image_id: Image ID.
        :param pulumi.Input[str] instance_charge_type: Billing methods. Optional values:
               - PrePaid: Monthly, or annual subscription. Make sure that your registered credit card is invalid or you have insufficient balance in your PayPal account. Otherwise, InvalidPayMethod error may occur.
               - PostPaid: Pay-As-You-Go.
        :param pulumi.Input[str] instance_name: The name of the instance. The name is a string of 2 to 128 characters. It must begin with an English or a Chinese character. It can contain A-Z, a-z, Chinese characters, numbers, periods (.), colons (:), underscores (_), and hyphens (-).
        :param pulumi.Input[str] instance_type: Instance type. For more information, call resource_alicloud_instances to obtain the latest instance type list.
        :param pulumi.Input[str] internet_charge_type: Internet bandwidth billing method. Optional values: PayByTraffic.
        :param pulumi.Input[float] internet_max_bandwidth_in: The maximum inbound bandwidth from the Internet network, measured in Mbit/s. Value range: [1, 200].
        :param pulumi.Input[float] internet_max_bandwidth_out: Maximum outbound bandwidth from the Internet, its unit of measurement is Mbit/s. Value range: [0, 100].
        :param pulumi.Input[str] io_optimized: Whether it is an I/O-optimized instance or not. Optional values:
               - none
               - optimized
        :param pulumi.Input[str] key_pair_name: The name of the key pair.
               - Ignore this parameter for Windows instances. It is null by default. Even if you enter this parameter, only the  Password content is used.
               - The password logon method for Linux instances is set to forbidden upon initialization.
        :param pulumi.Input[str] name: The name of the data disk.
        :param pulumi.Input[dict] network_interfaces: The list of network interfaces created with instance.
        :param pulumi.Input[str] network_type: Network type of the instance. Value options: Classic | VPC.
        :param pulumi.Input[str] ram_role_name: The RAM role name of the instance. You can use the RAM API ListRoles to query instance RAM role names.
        :param pulumi.Input[str] security_enhancement_strategy: Whether or not to activate the security enhancement feature and install network security software free of charge. Optional values: Active | Deactive.
        :param pulumi.Input[str] security_group_id: The security group ID must be one in the same VPC.
        :param pulumi.Input[str] spot_strategy: The spot strategy for a Pay-As-You-Go instance. This parameter is valid and required only when InstanceChargeType is set to PostPaid. Value range:
               - NoSpot: Normal Pay-As-You-Go instance.
               - SpotWithPriceLimit: Sets the maximum price for a spot instance.
               - SpotAsPriceGo: The system automatically calculates the price. The maximum value is the Pay-As-You-Go price.
        :param pulumi.Input[str] system_disk_category: The category of the system disk. System disk type. Optional values:
               - cloud: Basic cloud disk.
               - cloud_efficiency: Ultra cloud disk.
               - cloud_ssd: SSD cloud Disks.
               - ephemeral_ssd: local SSD Disks
               - cloud_essd: ESSD cloud Disks.
        :param pulumi.Input[str] system_disk_description: System disk description. It cannot begin with http:// or https://.
        :param pulumi.Input[str] system_disk_name: System disk name. The name is a string of 2 to 128 characters. It must begin with an English or a Chinese character. It can contain A-Z, a-z, Chinese characters, numbers, periods (.), colons (:), underscores (_), and hyphens (-).
        :param pulumi.Input[float] system_disk_size: Size of the system disk, measured in GB. Value range: [20, 500].
        :param pulumi.Input[dict] tags: A mapping of tags to assign to the resource.
               - Key: It can be up to 64 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It cannot be a null string.
               - Value: It can be up to 128 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It can be a null string.
        :param pulumi.Input[str] userdata: User data of the instance, which is Base64-encoded. Size of the raw data cannot exceed 16 KB.
        :param pulumi.Input[str] vswitch_id: The VSwitch ID for ENI. The instance must be in the same zone of the same VPC network as the ENI, but they may belong to different VSwitches.
        :param pulumi.Input[str] zone_id: The zone ID of the instance.

        The **data_disks** object supports the following:

          * `category` (`pulumi.Input[str]`) - The category of the disk:
            - cloud: Basic cloud disk.
            - cloud_efficiency: Ultra cloud disk.
            - cloud_ssd: SSD cloud Disks.
            - ephemeral_ssd: local SSD Disks
            - cloud_essd: ESSD cloud Disks.
          * `delete_with_instance` (`pulumi.Input[bool]`) - Delete this data disk when the instance is destroyed. It only works on cloud, cloud_efficiency, cloud_ssd and cloud_essd disk. If the category of this data disk was ephemeral_ssd, please don't set this param.
          * `description` (`pulumi.Input[str]`) - The description of the data disk.
          * `encrypted` (`pulumi.Input[bool]`)
          * `name` (`pulumi.Input[str]`) - The name of the data disk.
          * `size` (`pulumi.Input[float]`) - The size of the data disk.
            - cloud：[5, 2000]
            - cloud_efficiency：[20, 32768]
            - cloud_ssd：[20, 32768]
            - cloud_essd：[20, 32768]
            - ephemeral_ssd: [5, 800]
          * `snapshot_id` (`pulumi.Input[str]`) - 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.

        The **network_interfaces** object supports the following:

          * `description` (`pulumi.Input[str]`) - The description of the data disk.
          * `name` (`pulumi.Input[str]`) - The name of the data disk.
          * `primaryIp` (`pulumi.Input[str]`) - The primary private IP address of the ENI.
          * `security_group_id` (`pulumi.Input[str]`) - The security group ID must be one in the same VPC.
          * `vswitch_id` (`pulumi.Input[str]`) - The VSwitch ID for ENI. The instance must be in the same zone of the same VPC network as the ENI, but they may belong to different VSwitches.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = dict()

        __props__["auto_release_time"] = auto_release_time
        __props__["data_disks"] = data_disks
        __props__["description"] = description
        __props__["host_name"] = host_name
        __props__["image_id"] = image_id
        __props__["image_owner_alias"] = image_owner_alias
        __props__["instance_charge_type"] = instance_charge_type
        __props__["instance_name"] = instance_name
        __props__["instance_type"] = instance_type
        __props__["internet_charge_type"] = internet_charge_type
        __props__["internet_max_bandwidth_in"] = internet_max_bandwidth_in
        __props__["internet_max_bandwidth_out"] = internet_max_bandwidth_out
        __props__["io_optimized"] = io_optimized
        __props__["key_pair_name"] = key_pair_name
        __props__["name"] = name
        __props__["network_interfaces"] = network_interfaces
        __props__["network_type"] = network_type
        __props__["ram_role_name"] = ram_role_name
        __props__["resource_group_id"] = resource_group_id
        __props__["security_enhancement_strategy"] = security_enhancement_strategy
        __props__["security_group_id"] = security_group_id
        __props__["spot_price_limit"] = spot_price_limit
        __props__["spot_strategy"] = spot_strategy
        __props__["system_disk_category"] = system_disk_category
        __props__["system_disk_description"] = system_disk_description
        __props__["system_disk_name"] = system_disk_name
        __props__["system_disk_size"] = system_disk_size
        __props__["tags"] = tags
        __props__["userdata"] = userdata
        __props__["vpc_id"] = vpc_id
        __props__["vswitch_id"] = vswitch_id
        __props__["zone_id"] = zone_id
        return LaunchTemplate(resource_name, opts=opts, __props__=__props__)
    def translate_output_property(self, prop):
        return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop

    def translate_input_property(self, prop):
        return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop

