# 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 warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union
from . import _utilities, _tables
from . import outputs
from ._inputs import *

__all__ = ['VirtualMachine']


class VirtualMachine(pulumi.CustomResource):
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 alternate_guest_name: Optional[pulumi.Input[str]] = None,
                 annotation: Optional[pulumi.Input[str]] = None,
                 boot_delay: Optional[pulumi.Input[int]] = None,
                 boot_retry_delay: Optional[pulumi.Input[int]] = None,
                 boot_retry_enabled: Optional[pulumi.Input[bool]] = None,
                 cdrom: Optional[pulumi.Input[pulumi.InputType['VirtualMachineCdromArgs']]] = None,
                 clone: Optional[pulumi.Input[pulumi.InputType['VirtualMachineCloneArgs']]] = None,
                 cpu_hot_add_enabled: Optional[pulumi.Input[bool]] = None,
                 cpu_hot_remove_enabled: Optional[pulumi.Input[bool]] = None,
                 cpu_limit: Optional[pulumi.Input[int]] = None,
                 cpu_performance_counters_enabled: Optional[pulumi.Input[bool]] = None,
                 cpu_reservation: Optional[pulumi.Input[int]] = None,
                 cpu_share_count: Optional[pulumi.Input[int]] = None,
                 cpu_share_level: Optional[pulumi.Input[str]] = None,
                 custom_attributes: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 datacenter_id: Optional[pulumi.Input[str]] = None,
                 datastore_cluster_id: Optional[pulumi.Input[str]] = None,
                 datastore_id: Optional[pulumi.Input[str]] = None,
                 disks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['VirtualMachineDiskArgs']]]]] = None,
                 efi_secure_boot_enabled: Optional[pulumi.Input[bool]] = None,
                 enable_disk_uuid: Optional[pulumi.Input[bool]] = None,
                 enable_logging: Optional[pulumi.Input[bool]] = None,
                 ept_rvi_mode: Optional[pulumi.Input[str]] = None,
                 extra_config: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 firmware: Optional[pulumi.Input[str]] = None,
                 folder: Optional[pulumi.Input[str]] = None,
                 force_power_off: Optional[pulumi.Input[bool]] = None,
                 guest_id: Optional[pulumi.Input[str]] = None,
                 hardware_version: Optional[pulumi.Input[int]] = None,
                 host_system_id: Optional[pulumi.Input[str]] = None,
                 hv_mode: Optional[pulumi.Input[str]] = None,
                 ide_controller_count: Optional[pulumi.Input[int]] = None,
                 ignored_guest_ips: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 latency_sensitivity: Optional[pulumi.Input[str]] = None,
                 memory: Optional[pulumi.Input[int]] = None,
                 memory_hot_add_enabled: Optional[pulumi.Input[bool]] = None,
                 memory_limit: Optional[pulumi.Input[int]] = None,
                 memory_reservation: Optional[pulumi.Input[int]] = None,
                 memory_share_count: Optional[pulumi.Input[int]] = None,
                 memory_share_level: Optional[pulumi.Input[str]] = None,
                 migrate_wait_timeout: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 nested_hv_enabled: Optional[pulumi.Input[bool]] = None,
                 network_interfaces: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['VirtualMachineNetworkInterfaceArgs']]]]] = None,
                 num_cores_per_socket: Optional[pulumi.Input[int]] = None,
                 num_cpus: Optional[pulumi.Input[int]] = None,
                 ovf_deploy: Optional[pulumi.Input[pulumi.InputType['VirtualMachineOvfDeployArgs']]] = None,
                 pci_device_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 poweron_timeout: Optional[pulumi.Input[int]] = None,
                 resource_pool_id: Optional[pulumi.Input[str]] = None,
                 run_tools_scripts_after_power_on: Optional[pulumi.Input[bool]] = None,
                 run_tools_scripts_after_resume: Optional[pulumi.Input[bool]] = None,
                 run_tools_scripts_before_guest_reboot: Optional[pulumi.Input[bool]] = None,
                 run_tools_scripts_before_guest_shutdown: Optional[pulumi.Input[bool]] = None,
                 run_tools_scripts_before_guest_standby: Optional[pulumi.Input[bool]] = None,
                 sata_controller_count: Optional[pulumi.Input[int]] = None,
                 scsi_bus_sharing: Optional[pulumi.Input[str]] = None,
                 scsi_controller_count: Optional[pulumi.Input[int]] = None,
                 scsi_type: Optional[pulumi.Input[str]] = None,
                 shutdown_wait_timeout: Optional[pulumi.Input[int]] = None,
                 storage_policy_id: Optional[pulumi.Input[str]] = None,
                 swap_placement_policy: Optional[pulumi.Input[str]] = None,
                 sync_time_with_host: Optional[pulumi.Input[bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 vapp: Optional[pulumi.Input[pulumi.InputType['VirtualMachineVappArgs']]] = None,
                 wait_for_guest_ip_timeout: Optional[pulumi.Input[int]] = None,
                 wait_for_guest_net_routable: Optional[pulumi.Input[bool]] = None,
                 wait_for_guest_net_timeout: Optional[pulumi.Input[int]] = None,
                 __props__=None,
                 __name__=None,
                 __opts__=None):
        """
        Create a VirtualMachine resource with the given unique name, props, and options.
        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] alternate_guest_name: The guest name for the operating system
               when `guest_id` is `other` or `other-64`.
        :param pulumi.Input[str] annotation: A user-provided description of the virtual machine.
               The default is no annotation.
        :param pulumi.Input[int] boot_delay: The number of milliseconds to wait before starting
               the boot sequence. The default is no delay.
        :param pulumi.Input[int] boot_retry_delay: The number of milliseconds to wait before
               retrying the boot sequence. This only valid if `boot_retry_enabled` is true.
               Default: `10000` (10 seconds).
        :param pulumi.Input[bool] boot_retry_enabled: If set to true, a virtual machine that
               fails to boot will try again after the delay defined in `boot_retry_delay`.
               Default: `false`.
        :param pulumi.Input[pulumi.InputType['VirtualMachineCdromArgs']] cdrom: A specification for a CDROM device on this virtual
               machine. See CDROM options below.
        :param pulumi.Input[pulumi.InputType['VirtualMachineCloneArgs']] clone: When specified, the VM will be created as a clone of a
               specified template. Optional customization options can be submitted as well.
               See creating a virtual machine from a
               template for more details.
        :param pulumi.Input[bool] cpu_hot_add_enabled: Allow CPUs to be added to this virtual
               machine while it is running.
        :param pulumi.Input[bool] cpu_hot_remove_enabled: Allow CPUs to be removed to this
               virtual machine while it is running.
        :param pulumi.Input[int] cpu_limit: The maximum amount of CPU (in MHz) that this virtual
               machine can consume, regardless of available resources. The default is no
               limit.
        :param pulumi.Input[bool] cpu_performance_counters_enabled: Enable CPU performance
               counters on this virtual machine. Default: `false`.
        :param pulumi.Input[int] cpu_reservation: The amount of CPU (in MHz) that this virtual
               machine is guaranteed. The default is no reservation.
        :param pulumi.Input[int] cpu_share_count: The number of CPU shares allocated to the
               virtual machine when the `cpu_share_level` is `custom`.
        :param pulumi.Input[str] cpu_share_level: The allocation level for CPU resources. Can be
               one of `high`, `low`, `normal`, or `custom`. Default: `custom`.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] custom_attributes: Map of custom attribute ids to attribute
               value strings to set for virtual machine.
        :param pulumi.Input[str] datacenter_id: The datacenter id. Required only when deploying
               an ovf template.
        :param pulumi.Input[str] datastore_cluster_id: The managed object reference
               ID of the datastore cluster ID to use. This setting
               applies to entire virtual machine and implies that you wish to use Storage
               DRS with this virtual machine. See the section on virtual machine
               migration for details on changing this value.
        :param pulumi.Input[str] datastore_id: The datastore ID that the ISO is located in.
               Requried for using a datastore ISO. Conflicts with `client_device`.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['VirtualMachineDiskArgs']]]] disks: A specification for a virtual disk device on this virtual
               machine. See disk options below.
        :param pulumi.Input[bool] efi_secure_boot_enabled: When the `firmware` type is set to is
               `efi`, this enables EFI secure boot. Default: `false`.
        :param pulumi.Input[bool] enable_disk_uuid: Expose the UUIDs of attached virtual disks to
               the virtual machine, allowing access to them in the guest. Default: `false`.
        :param pulumi.Input[bool] enable_logging: Enable logging of virtual machine events to a
               log file stored in the virtual machine directory. Default: `false`.
        :param pulumi.Input[str] ept_rvi_mode: The EPT/RVI (hardware memory virtualization)
               setting for this virtual machine. Can be one of `automatic`, `on`, or `off`.
               Default: `automatic`.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] extra_config: Extra configuration data for this virtual
               machine. Can be used to supply advanced parameters not normally in
               configuration, such as instance metadata.
        :param pulumi.Input[str] firmware: The firmware interface to use on the virtual machine.
               Can be one of `bios` or `EFI`. Default: `bios`.
        :param pulumi.Input[str] folder: The path to the folder to put this virtual machine in,
               relative to the datacenter that the resource pool is in.
        :param pulumi.Input[bool] force_power_off: If a guest shutdown failed or timed out while
               updating or destroying (see
               `shutdown_wait_timeout`), force the power-off of
               the virtual machine. Default: `true`.
        :param pulumi.Input[str] guest_id: The guest ID for the operating system type. For a
               full list of possible values, see [here][vmware-docs-guest-ids]. Default: `other-64`.
        :param pulumi.Input[int] hardware_version: The hardware version number. Valid range
               is from 4 to 15. The hardware version cannot be downgraded. See [virtual
               machine hardware compatibility][virtual-machine-hardware-compatibility] for
               more details.
        :param pulumi.Input[str] host_system_id: An optional managed object reference
               ID of a host to put this virtual machine on. See the
               section on virtual machine migration for
               details on changing this value. If a `host_system_id` is not supplied,
               vSphere will select a host in the resource pool to place the virtual machine,
               according to any defaults or DRS policies in place.
        :param pulumi.Input[str] hv_mode: The (non-nested) hardware virtualization setting for
               this virtual machine. Can be one of `hvAuto`, `hvOn`, or `hvOff`. Default:
               `hvAuto`.
        :param pulumi.Input[int] ide_controller_count: The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks
               you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove
               controllers.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ignored_guest_ips: List of IP addresses and CIDR networks to
               ignore while waiting for an available IP address using either of the waiters.
               Any IP addresses in this list will be ignored if they show up so that the
               waiter will continue to wait for a real IP address. Default: [].
        :param pulumi.Input[str] latency_sensitivity: Controls the scheduling delay of the
               virtual machine. Use a higher sensitivity for applications that require lower
               latency, such as VOIP, media player applications, or applications that
               require frequent access to mouse or keyboard devices. Can be one of `low`,
               `normal`, `medium`, or `high`.
        :param pulumi.Input[int] memory: The size of the virtual machine's memory, in MB.
               Default: `1024` (1 GB).
        :param pulumi.Input[bool] memory_hot_add_enabled: Allow memory to be added to this
               virtual machine while it is running.
        :param pulumi.Input[int] memory_limit: The maximum amount of memory (in MB) that this
               virtual machine can consume, regardless of available resources. The default
               is no limit.
        :param pulumi.Input[int] memory_reservation: The amount of memory (in MB) that this
               virtual machine is guaranteed. The default is no reservation.
        :param pulumi.Input[int] memory_share_count: The number of memory shares allocated to
               the virtual machine when the `memory_share_level` is `custom`.
        :param pulumi.Input[str] memory_share_level: The allocation level for memory resources.
               Can be one of `high`, `low`, `normal`, or `custom`. Default: `custom`.
        :param pulumi.Input[int] migrate_wait_timeout: The amount of time, in minutes, to wait
               for a virtual machine migration to complete before failing. Default: 10
               minutes. Also see the section on virtual machine
               migration.
        :param pulumi.Input[str] name: An alias for both `label` and `path`, the latter when
               using `attach`. Required if not using `label`.
        :param pulumi.Input[bool] nested_hv_enabled: Enable nested hardware virtualization on
               this virtual machine, facilitating nested virtualization in the guest.
               Default: `false`.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['VirtualMachineNetworkInterfaceArgs']]]] network_interfaces: A specification for a virtual NIC on this
               virtual machine. See network interface options
               below.
        :param pulumi.Input[int] num_cores_per_socket: The number of cores per socket in this
               virtual machine. The number of vCPUs on the virtual machine will be
               `num_cpus` divided by `num_cores_per_socket`. If specified, the value
               supplied to `num_cpus` must be evenly divisible by this value. Default: `1`.
        :param pulumi.Input[int] num_cpus: The total number of virtual processor cores to assign
               to this virtual machine. Default: `1`.
        :param pulumi.Input[pulumi.InputType['VirtualMachineOvfDeployArgs']] ovf_deploy: When specified, the VM will be deployed from the
               provided ovf/ova template. See creating a virtual machine from a
               ovf/ova template for more details.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] pci_device_ids: List of host PCI device IDs to create PCI
               passthroughs for.
        :param pulumi.Input[int] poweron_timeout: The amount of time, in seconds, that we will be trying to power on a VM
        :param pulumi.Input[str] resource_pool_id: The managed object reference
               ID of the resource pool to put this virtual machine in.
               See the section on virtual machine migration
               for details on changing this value.
        :param pulumi.Input[bool] run_tools_scripts_after_power_on: Enable the execution of
               post-power-on scripts when VMware tools is installed. Default: `true`.
        :param pulumi.Input[bool] run_tools_scripts_after_resume: Enable the execution of
               post-resume scripts when VMware tools is installed. Default: `true`.
        :param pulumi.Input[bool] run_tools_scripts_before_guest_reboot: Enable the execution of
               pre-reboot scripts when VMware tools is installed. Default: `false`.
        :param pulumi.Input[bool] run_tools_scripts_before_guest_shutdown: Enable the execution
               of pre-shutdown scripts when VMware tools is installed. Default: `true`.
        :param pulumi.Input[bool] run_tools_scripts_before_guest_standby: Enable the execution of
               pre-standby scripts when VMware tools is installed. Default: `true`.
        :param pulumi.Input[int] sata_controller_count: The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks
               you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove
               controllers.
        :param pulumi.Input[str] scsi_bus_sharing: Mode for sharing the SCSI bus. The modes are
               physicalSharing, virtualSharing, and noSharing. Default: `noSharing`.
        :param pulumi.Input[int] scsi_controller_count: The number of SCSI controllers that
               this provider manages on this virtual machine. This directly affects the amount
               of disks you can add to the virtual machine and the maximum disk unit number.
               Note that lowering this value does not remove controllers. Default: `1`.
        :param pulumi.Input[str] scsi_type: The type of SCSI bus this virtual machine will have.
               Can be one of lsilogic (LSI Logic Parallel), lsilogic-sas (LSI Logic SAS) or
               pvscsi (VMware Paravirtual). Defualt: `pvscsi`.
        :param pulumi.Input[int] shutdown_wait_timeout: The amount of time, in minutes, to wait
               for a graceful guest shutdown when making necessary updates to the virtual
               machine. If `force_power_off` is set to true, the VM will be force powered-off
               after this timeout, otherwise an error is returned. Default: 3 minutes.
        :param pulumi.Input[str] storage_policy_id: The UUID of the storage policy to assign to this disk.
        :param pulumi.Input[str] swap_placement_policy: The swap file placement policy for this
               virtual machine. Can be one of `inherit`, `hostLocal`, or `vmDirectory`.
               Default: `inherit`.
        :param pulumi.Input[bool] sync_time_with_host: Enable guest clock synchronization with
               the host. Requires VMware tools to be installed. Default: `false`.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The IDs of any tags to attach to this resource.
        :param pulumi.Input[pulumi.InputType['VirtualMachineVappArgs']] vapp: Optional vApp configuration. The only sub-key available
               is `properties`, which is a key/value map of properties for virtual machines
               imported from OVF or OVA files. See Using vApp properties to supply OVF/OVA
               configuration for
               more details.
        :param pulumi.Input[int] wait_for_guest_ip_timeout: The amount of time, in minutes, to
               wait for an available guest IP address on this virtual machine. This should
               only be used if your version of VMware Tools does not allow the
               `wait_for_guest_net_timeout` waiter to be
               used. A value less than 1 disables the waiter. Default: 0.
        :param pulumi.Input[bool] wait_for_guest_net_routable: Controls whether or not the guest
               network waiter waits for a routable address. When `false`, the waiter does
               not wait for a default gateway, nor are IP addresses checked against any
               discovered default gateways as part of its success criteria. This property is
               ignored if the `wait_for_guest_ip_timeout`
               waiter is used. Default: `true`.
        :param pulumi.Input[int] wait_for_guest_net_timeout: The amount of time, in minutes, to
               wait for an available IP address on this virtual machine's NICs. Older
               versions of VMware Tools do not populate this property. In those cases, this
               waiter can be disabled and the
               `wait_for_guest_ip_timeout` waiter can be used
               instead. A value less than 1 disables the waiter. Default: 5 minutes.
        """
        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__['alternate_guest_name'] = alternate_guest_name
            __props__['annotation'] = annotation
            __props__['boot_delay'] = boot_delay
            __props__['boot_retry_delay'] = boot_retry_delay
            __props__['boot_retry_enabled'] = boot_retry_enabled
            __props__['cdrom'] = cdrom
            __props__['clone'] = clone
            __props__['cpu_hot_add_enabled'] = cpu_hot_add_enabled
            __props__['cpu_hot_remove_enabled'] = cpu_hot_remove_enabled
            __props__['cpu_limit'] = cpu_limit
            __props__['cpu_performance_counters_enabled'] = cpu_performance_counters_enabled
            __props__['cpu_reservation'] = cpu_reservation
            __props__['cpu_share_count'] = cpu_share_count
            __props__['cpu_share_level'] = cpu_share_level
            __props__['custom_attributes'] = custom_attributes
            __props__['datacenter_id'] = datacenter_id
            __props__['datastore_cluster_id'] = datastore_cluster_id
            __props__['datastore_id'] = datastore_id
            __props__['disks'] = disks
            __props__['efi_secure_boot_enabled'] = efi_secure_boot_enabled
            __props__['enable_disk_uuid'] = enable_disk_uuid
            __props__['enable_logging'] = enable_logging
            __props__['ept_rvi_mode'] = ept_rvi_mode
            __props__['extra_config'] = extra_config
            __props__['firmware'] = firmware
            __props__['folder'] = folder
            __props__['force_power_off'] = force_power_off
            __props__['guest_id'] = guest_id
            __props__['hardware_version'] = hardware_version
            __props__['host_system_id'] = host_system_id
            __props__['hv_mode'] = hv_mode
            __props__['ide_controller_count'] = ide_controller_count
            __props__['ignored_guest_ips'] = ignored_guest_ips
            __props__['latency_sensitivity'] = latency_sensitivity
            __props__['memory'] = memory
            __props__['memory_hot_add_enabled'] = memory_hot_add_enabled
            __props__['memory_limit'] = memory_limit
            __props__['memory_reservation'] = memory_reservation
            __props__['memory_share_count'] = memory_share_count
            __props__['memory_share_level'] = memory_share_level
            __props__['migrate_wait_timeout'] = migrate_wait_timeout
            __props__['name'] = name
            __props__['nested_hv_enabled'] = nested_hv_enabled
            __props__['network_interfaces'] = network_interfaces
            __props__['num_cores_per_socket'] = num_cores_per_socket
            __props__['num_cpus'] = num_cpus
            __props__['ovf_deploy'] = ovf_deploy
            __props__['pci_device_ids'] = pci_device_ids
            __props__['poweron_timeout'] = poweron_timeout
            if resource_pool_id is None and not opts.urn:
                raise TypeError("Missing required property 'resource_pool_id'")
            __props__['resource_pool_id'] = resource_pool_id
            __props__['run_tools_scripts_after_power_on'] = run_tools_scripts_after_power_on
            __props__['run_tools_scripts_after_resume'] = run_tools_scripts_after_resume
            __props__['run_tools_scripts_before_guest_reboot'] = run_tools_scripts_before_guest_reboot
            __props__['run_tools_scripts_before_guest_shutdown'] = run_tools_scripts_before_guest_shutdown
            __props__['run_tools_scripts_before_guest_standby'] = run_tools_scripts_before_guest_standby
            __props__['sata_controller_count'] = sata_controller_count
            __props__['scsi_bus_sharing'] = scsi_bus_sharing
            __props__['scsi_controller_count'] = scsi_controller_count
            __props__['scsi_type'] = scsi_type
            __props__['shutdown_wait_timeout'] = shutdown_wait_timeout
            __props__['storage_policy_id'] = storage_policy_id
            __props__['swap_placement_policy'] = swap_placement_policy
            __props__['sync_time_with_host'] = sync_time_with_host
            __props__['tags'] = tags
            __props__['vapp'] = vapp
            __props__['wait_for_guest_ip_timeout'] = wait_for_guest_ip_timeout
            __props__['wait_for_guest_net_routable'] = wait_for_guest_net_routable
            __props__['wait_for_guest_net_timeout'] = wait_for_guest_net_timeout
            __props__['change_version'] = None
            __props__['default_ip_address'] = None
            __props__['guest_ip_addresses'] = None
            __props__['imported'] = None
            __props__['moid'] = None
            __props__['reboot_required'] = None
            __props__['uuid'] = None
            __props__['vapp_transports'] = None
            __props__['vmware_tools_status'] = None
            __props__['vmx_path'] = None
        super(VirtualMachine, __self__).__init__(
            'vsphere:index/virtualMachine:VirtualMachine',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            alternate_guest_name: Optional[pulumi.Input[str]] = None,
            annotation: Optional[pulumi.Input[str]] = None,
            boot_delay: Optional[pulumi.Input[int]] = None,
            boot_retry_delay: Optional[pulumi.Input[int]] = None,
            boot_retry_enabled: Optional[pulumi.Input[bool]] = None,
            cdrom: Optional[pulumi.Input[pulumi.InputType['VirtualMachineCdromArgs']]] = None,
            change_version: Optional[pulumi.Input[str]] = None,
            clone: Optional[pulumi.Input[pulumi.InputType['VirtualMachineCloneArgs']]] = None,
            cpu_hot_add_enabled: Optional[pulumi.Input[bool]] = None,
            cpu_hot_remove_enabled: Optional[pulumi.Input[bool]] = None,
            cpu_limit: Optional[pulumi.Input[int]] = None,
            cpu_performance_counters_enabled: Optional[pulumi.Input[bool]] = None,
            cpu_reservation: Optional[pulumi.Input[int]] = None,
            cpu_share_count: Optional[pulumi.Input[int]] = None,
            cpu_share_level: Optional[pulumi.Input[str]] = None,
            custom_attributes: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
            datacenter_id: Optional[pulumi.Input[str]] = None,
            datastore_cluster_id: Optional[pulumi.Input[str]] = None,
            datastore_id: Optional[pulumi.Input[str]] = None,
            default_ip_address: Optional[pulumi.Input[str]] = None,
            disks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['VirtualMachineDiskArgs']]]]] = None,
            efi_secure_boot_enabled: Optional[pulumi.Input[bool]] = None,
            enable_disk_uuid: Optional[pulumi.Input[bool]] = None,
            enable_logging: Optional[pulumi.Input[bool]] = None,
            ept_rvi_mode: Optional[pulumi.Input[str]] = None,
            extra_config: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
            firmware: Optional[pulumi.Input[str]] = None,
            folder: Optional[pulumi.Input[str]] = None,
            force_power_off: Optional[pulumi.Input[bool]] = None,
            guest_id: Optional[pulumi.Input[str]] = None,
            guest_ip_addresses: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            hardware_version: Optional[pulumi.Input[int]] = None,
            host_system_id: Optional[pulumi.Input[str]] = None,
            hv_mode: Optional[pulumi.Input[str]] = None,
            ide_controller_count: Optional[pulumi.Input[int]] = None,
            ignored_guest_ips: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            imported: Optional[pulumi.Input[bool]] = None,
            latency_sensitivity: Optional[pulumi.Input[str]] = None,
            memory: Optional[pulumi.Input[int]] = None,
            memory_hot_add_enabled: Optional[pulumi.Input[bool]] = None,
            memory_limit: Optional[pulumi.Input[int]] = None,
            memory_reservation: Optional[pulumi.Input[int]] = None,
            memory_share_count: Optional[pulumi.Input[int]] = None,
            memory_share_level: Optional[pulumi.Input[str]] = None,
            migrate_wait_timeout: Optional[pulumi.Input[int]] = None,
            moid: Optional[pulumi.Input[str]] = None,
            name: Optional[pulumi.Input[str]] = None,
            nested_hv_enabled: Optional[pulumi.Input[bool]] = None,
            network_interfaces: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['VirtualMachineNetworkInterfaceArgs']]]]] = None,
            num_cores_per_socket: Optional[pulumi.Input[int]] = None,
            num_cpus: Optional[pulumi.Input[int]] = None,
            ovf_deploy: Optional[pulumi.Input[pulumi.InputType['VirtualMachineOvfDeployArgs']]] = None,
            pci_device_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            poweron_timeout: Optional[pulumi.Input[int]] = None,
            reboot_required: Optional[pulumi.Input[bool]] = None,
            resource_pool_id: Optional[pulumi.Input[str]] = None,
            run_tools_scripts_after_power_on: Optional[pulumi.Input[bool]] = None,
            run_tools_scripts_after_resume: Optional[pulumi.Input[bool]] = None,
            run_tools_scripts_before_guest_reboot: Optional[pulumi.Input[bool]] = None,
            run_tools_scripts_before_guest_shutdown: Optional[pulumi.Input[bool]] = None,
            run_tools_scripts_before_guest_standby: Optional[pulumi.Input[bool]] = None,
            sata_controller_count: Optional[pulumi.Input[int]] = None,
            scsi_bus_sharing: Optional[pulumi.Input[str]] = None,
            scsi_controller_count: Optional[pulumi.Input[int]] = None,
            scsi_type: Optional[pulumi.Input[str]] = None,
            shutdown_wait_timeout: Optional[pulumi.Input[int]] = None,
            storage_policy_id: Optional[pulumi.Input[str]] = None,
            swap_placement_policy: Optional[pulumi.Input[str]] = None,
            sync_time_with_host: Optional[pulumi.Input[bool]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            uuid: Optional[pulumi.Input[str]] = None,
            vapp: Optional[pulumi.Input[pulumi.InputType['VirtualMachineVappArgs']]] = None,
            vapp_transports: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            vmware_tools_status: Optional[pulumi.Input[str]] = None,
            vmx_path: Optional[pulumi.Input[str]] = None,
            wait_for_guest_ip_timeout: Optional[pulumi.Input[int]] = None,
            wait_for_guest_net_routable: Optional[pulumi.Input[bool]] = None,
            wait_for_guest_net_timeout: Optional[pulumi.Input[int]] = None) -> 'VirtualMachine':
        """
        Get an existing VirtualMachine 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 pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] alternate_guest_name: The guest name for the operating system
               when `guest_id` is `other` or `other-64`.
        :param pulumi.Input[str] annotation: A user-provided description of the virtual machine.
               The default is no annotation.
        :param pulumi.Input[int] boot_delay: The number of milliseconds to wait before starting
               the boot sequence. The default is no delay.
        :param pulumi.Input[int] boot_retry_delay: The number of milliseconds to wait before
               retrying the boot sequence. This only valid if `boot_retry_enabled` is true.
               Default: `10000` (10 seconds).
        :param pulumi.Input[bool] boot_retry_enabled: If set to true, a virtual machine that
               fails to boot will try again after the delay defined in `boot_retry_delay`.
               Default: `false`.
        :param pulumi.Input[pulumi.InputType['VirtualMachineCdromArgs']] cdrom: A specification for a CDROM device on this virtual
               machine. See CDROM options below.
        :param pulumi.Input[str] change_version: A unique identifier for a given version of the last
               configuration applied, such the timestamp of the last update to the
               configuration.
        :param pulumi.Input[pulumi.InputType['VirtualMachineCloneArgs']] clone: When specified, the VM will be created as a clone of a
               specified template. Optional customization options can be submitted as well.
               See creating a virtual machine from a
               template for more details.
        :param pulumi.Input[bool] cpu_hot_add_enabled: Allow CPUs to be added to this virtual
               machine while it is running.
        :param pulumi.Input[bool] cpu_hot_remove_enabled: Allow CPUs to be removed to this
               virtual machine while it is running.
        :param pulumi.Input[int] cpu_limit: The maximum amount of CPU (in MHz) that this virtual
               machine can consume, regardless of available resources. The default is no
               limit.
        :param pulumi.Input[bool] cpu_performance_counters_enabled: Enable CPU performance
               counters on this virtual machine. Default: `false`.
        :param pulumi.Input[int] cpu_reservation: The amount of CPU (in MHz) that this virtual
               machine is guaranteed. The default is no reservation.
        :param pulumi.Input[int] cpu_share_count: The number of CPU shares allocated to the
               virtual machine when the `cpu_share_level` is `custom`.
        :param pulumi.Input[str] cpu_share_level: The allocation level for CPU resources. Can be
               one of `high`, `low`, `normal`, or `custom`. Default: `custom`.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] custom_attributes: Map of custom attribute ids to attribute
               value strings to set for virtual machine.
        :param pulumi.Input[str] datacenter_id: The datacenter id. Required only when deploying
               an ovf template.
        :param pulumi.Input[str] datastore_cluster_id: The managed object reference
               ID of the datastore cluster ID to use. This setting
               applies to entire virtual machine and implies that you wish to use Storage
               DRS with this virtual machine. See the section on virtual machine
               migration for details on changing this value.
        :param pulumi.Input[str] datastore_id: The datastore ID that the ISO is located in.
               Requried for using a datastore ISO. Conflicts with `client_device`.
        :param pulumi.Input[str] default_ip_address: The IP address selected by the provider to be used with
               any provisioners configured on this resource.
               Whenever possible, this is the first IPv4 address that is reachable through
               the default gateway configured on the machine, then the first reachable IPv6
               address, and then the first general discovered address if neither exist. If
               VMware tools is not running on the virtual machine, or if the VM is powered
               off, this value will be blank.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['VirtualMachineDiskArgs']]]] disks: A specification for a virtual disk device on this virtual
               machine. See disk options below.
        :param pulumi.Input[bool] efi_secure_boot_enabled: When the `firmware` type is set to is
               `efi`, this enables EFI secure boot. Default: `false`.
        :param pulumi.Input[bool] enable_disk_uuid: Expose the UUIDs of attached virtual disks to
               the virtual machine, allowing access to them in the guest. Default: `false`.
        :param pulumi.Input[bool] enable_logging: Enable logging of virtual machine events to a
               log file stored in the virtual machine directory. Default: `false`.
        :param pulumi.Input[str] ept_rvi_mode: The EPT/RVI (hardware memory virtualization)
               setting for this virtual machine. Can be one of `automatic`, `on`, or `off`.
               Default: `automatic`.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] extra_config: Extra configuration data for this virtual
               machine. Can be used to supply advanced parameters not normally in
               configuration, such as instance metadata.
        :param pulumi.Input[str] firmware: The firmware interface to use on the virtual machine.
               Can be one of `bios` or `EFI`. Default: `bios`.
        :param pulumi.Input[str] folder: The path to the folder to put this virtual machine in,
               relative to the datacenter that the resource pool is in.
        :param pulumi.Input[bool] force_power_off: If a guest shutdown failed or timed out while
               updating or destroying (see
               `shutdown_wait_timeout`), force the power-off of
               the virtual machine. Default: `true`.
        :param pulumi.Input[str] guest_id: The guest ID for the operating system type. For a
               full list of possible values, see [here][vmware-docs-guest-ids]. Default: `other-64`.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] guest_ip_addresses: The current list of IP addresses on this machine,
               including the value of `default_ip_address`. If VMware tools is not running
               on the virtual machine, or if the VM is powered off, this list will be empty.
               * `moid`: The managed object reference ID of the created
               virtual machine.
        :param pulumi.Input[int] hardware_version: The hardware version number. Valid range
               is from 4 to 15. The hardware version cannot be downgraded. See [virtual
               machine hardware compatibility][virtual-machine-hardware-compatibility] for
               more details.
        :param pulumi.Input[str] host_system_id: An optional managed object reference
               ID of a host to put this virtual machine on. See the
               section on virtual machine migration for
               details on changing this value. If a `host_system_id` is not supplied,
               vSphere will select a host in the resource pool to place the virtual machine,
               according to any defaults or DRS policies in place.
        :param pulumi.Input[str] hv_mode: The (non-nested) hardware virtualization setting for
               this virtual machine. Can be one of `hvAuto`, `hvOn`, or `hvOff`. Default:
               `hvAuto`.
        :param pulumi.Input[int] ide_controller_count: The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks
               you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove
               controllers.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ignored_guest_ips: List of IP addresses and CIDR networks to
               ignore while waiting for an available IP address using either of the waiters.
               Any IP addresses in this list will be ignored if they show up so that the
               waiter will continue to wait for a real IP address. Default: [].
        :param pulumi.Input[bool] imported: This is flagged if the virtual machine has been imported, or the
               state has been migrated from a previous version of the resource. It
               influences the behavior of the first post-import apply operation. See the
               section on importing below.
        :param pulumi.Input[str] latency_sensitivity: Controls the scheduling delay of the
               virtual machine. Use a higher sensitivity for applications that require lower
               latency, such as VOIP, media player applications, or applications that
               require frequent access to mouse or keyboard devices. Can be one of `low`,
               `normal`, `medium`, or `high`.
        :param pulumi.Input[int] memory: The size of the virtual machine's memory, in MB.
               Default: `1024` (1 GB).
        :param pulumi.Input[bool] memory_hot_add_enabled: Allow memory to be added to this
               virtual machine while it is running.
        :param pulumi.Input[int] memory_limit: The maximum amount of memory (in MB) that this
               virtual machine can consume, regardless of available resources. The default
               is no limit.
        :param pulumi.Input[int] memory_reservation: The amount of memory (in MB) that this
               virtual machine is guaranteed. The default is no reservation.
        :param pulumi.Input[int] memory_share_count: The number of memory shares allocated to
               the virtual machine when the `memory_share_level` is `custom`.
        :param pulumi.Input[str] memory_share_level: The allocation level for memory resources.
               Can be one of `high`, `low`, `normal`, or `custom`. Default: `custom`.
        :param pulumi.Input[int] migrate_wait_timeout: The amount of time, in minutes, to wait
               for a virtual machine migration to complete before failing. Default: 10
               minutes. Also see the section on virtual machine
               migration.
        :param pulumi.Input[str] moid: The machine object ID from VMWare
        :param pulumi.Input[str] name: An alias for both `label` and `path`, the latter when
               using `attach`. Required if not using `label`.
        :param pulumi.Input[bool] nested_hv_enabled: Enable nested hardware virtualization on
               this virtual machine, facilitating nested virtualization in the guest.
               Default: `false`.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['VirtualMachineNetworkInterfaceArgs']]]] network_interfaces: A specification for a virtual NIC on this
               virtual machine. See network interface options
               below.
        :param pulumi.Input[int] num_cores_per_socket: The number of cores per socket in this
               virtual machine. The number of vCPUs on the virtual machine will be
               `num_cpus` divided by `num_cores_per_socket`. If specified, the value
               supplied to `num_cpus` must be evenly divisible by this value. Default: `1`.
        :param pulumi.Input[int] num_cpus: The total number of virtual processor cores to assign
               to this virtual machine. Default: `1`.
        :param pulumi.Input[pulumi.InputType['VirtualMachineOvfDeployArgs']] ovf_deploy: When specified, the VM will be deployed from the
               provided ovf/ova template. See creating a virtual machine from a
               ovf/ova template for more details.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] pci_device_ids: List of host PCI device IDs to create PCI
               passthroughs for.
        :param pulumi.Input[int] poweron_timeout: The amount of time, in seconds, that we will be trying to power on a VM
        :param pulumi.Input[bool] reboot_required: Value internal to the provider used to determine if a
               configuration set change requires a reboot. This value is only useful during
               an update process and gets reset on refresh.
        :param pulumi.Input[str] resource_pool_id: The managed object reference
               ID of the resource pool to put this virtual machine in.
               See the section on virtual machine migration
               for details on changing this value.
        :param pulumi.Input[bool] run_tools_scripts_after_power_on: Enable the execution of
               post-power-on scripts when VMware tools is installed. Default: `true`.
        :param pulumi.Input[bool] run_tools_scripts_after_resume: Enable the execution of
               post-resume scripts when VMware tools is installed. Default: `true`.
        :param pulumi.Input[bool] run_tools_scripts_before_guest_reboot: Enable the execution of
               pre-reboot scripts when VMware tools is installed. Default: `false`.
        :param pulumi.Input[bool] run_tools_scripts_before_guest_shutdown: Enable the execution
               of pre-shutdown scripts when VMware tools is installed. Default: `true`.
        :param pulumi.Input[bool] run_tools_scripts_before_guest_standby: Enable the execution of
               pre-standby scripts when VMware tools is installed. Default: `true`.
        :param pulumi.Input[int] sata_controller_count: The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks
               you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove
               controllers.
        :param pulumi.Input[str] scsi_bus_sharing: Mode for sharing the SCSI bus. The modes are
               physicalSharing, virtualSharing, and noSharing. Default: `noSharing`.
        :param pulumi.Input[int] scsi_controller_count: The number of SCSI controllers that
               this provider manages on this virtual machine. This directly affects the amount
               of disks you can add to the virtual machine and the maximum disk unit number.
               Note that lowering this value does not remove controllers. Default: `1`.
        :param pulumi.Input[str] scsi_type: The type of SCSI bus this virtual machine will have.
               Can be one of lsilogic (LSI Logic Parallel), lsilogic-sas (LSI Logic SAS) or
               pvscsi (VMware Paravirtual). Defualt: `pvscsi`.
        :param pulumi.Input[int] shutdown_wait_timeout: The amount of time, in minutes, to wait
               for a graceful guest shutdown when making necessary updates to the virtual
               machine. If `force_power_off` is set to true, the VM will be force powered-off
               after this timeout, otherwise an error is returned. Default: 3 minutes.
        :param pulumi.Input[str] storage_policy_id: The UUID of the storage policy to assign to this disk.
        :param pulumi.Input[str] swap_placement_policy: The swap file placement policy for this
               virtual machine. Can be one of `inherit`, `hostLocal`, or `vmDirectory`.
               Default: `inherit`.
        :param pulumi.Input[bool] sync_time_with_host: Enable guest clock synchronization with
               the host. Requires VMware tools to be installed. Default: `false`.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The IDs of any tags to attach to this resource.
        :param pulumi.Input[str] uuid: The UUID of the virtual disk's VMDK file. This is used to track the
               virtual disk on the virtual machine.
        :param pulumi.Input[pulumi.InputType['VirtualMachineVappArgs']] vapp: Optional vApp configuration. The only sub-key available
               is `properties`, which is a key/value map of properties for virtual machines
               imported from OVF or OVA files. See Using vApp properties to supply OVF/OVA
               configuration for
               more details.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] vapp_transports: Computed value which is only valid for cloned virtual
               machines. A list of vApp transport methods supported by the source virtual
               machine or template.
        :param pulumi.Input[str] vmware_tools_status: The state of VMware tools in the guest. This will
               determine the proper course of action for some device operations.
        :param pulumi.Input[str] vmx_path: The path of the virtual machine's configuration file in the VM's
               datastore.
        :param pulumi.Input[int] wait_for_guest_ip_timeout: The amount of time, in minutes, to
               wait for an available guest IP address on this virtual machine. This should
               only be used if your version of VMware Tools does not allow the
               `wait_for_guest_net_timeout` waiter to be
               used. A value less than 1 disables the waiter. Default: 0.
        :param pulumi.Input[bool] wait_for_guest_net_routable: Controls whether or not the guest
               network waiter waits for a routable address. When `false`, the waiter does
               not wait for a default gateway, nor are IP addresses checked against any
               discovered default gateways as part of its success criteria. This property is
               ignored if the `wait_for_guest_ip_timeout`
               waiter is used. Default: `true`.
        :param pulumi.Input[int] wait_for_guest_net_timeout: The amount of time, in minutes, to
               wait for an available IP address on this virtual machine's NICs. Older
               versions of VMware Tools do not populate this property. In those cases, this
               waiter can be disabled and the
               `wait_for_guest_ip_timeout` waiter can be used
               instead. A value less than 1 disables the waiter. Default: 5 minutes.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = dict()

        __props__["alternate_guest_name"] = alternate_guest_name
        __props__["annotation"] = annotation
        __props__["boot_delay"] = boot_delay
        __props__["boot_retry_delay"] = boot_retry_delay
        __props__["boot_retry_enabled"] = boot_retry_enabled
        __props__["cdrom"] = cdrom
        __props__["change_version"] = change_version
        __props__["clone"] = clone
        __props__["cpu_hot_add_enabled"] = cpu_hot_add_enabled
        __props__["cpu_hot_remove_enabled"] = cpu_hot_remove_enabled
        __props__["cpu_limit"] = cpu_limit
        __props__["cpu_performance_counters_enabled"] = cpu_performance_counters_enabled
        __props__["cpu_reservation"] = cpu_reservation
        __props__["cpu_share_count"] = cpu_share_count
        __props__["cpu_share_level"] = cpu_share_level
        __props__["custom_attributes"] = custom_attributes
        __props__["datacenter_id"] = datacenter_id
        __props__["datastore_cluster_id"] = datastore_cluster_id
        __props__["datastore_id"] = datastore_id
        __props__["default_ip_address"] = default_ip_address
        __props__["disks"] = disks
        __props__["efi_secure_boot_enabled"] = efi_secure_boot_enabled
        __props__["enable_disk_uuid"] = enable_disk_uuid
        __props__["enable_logging"] = enable_logging
        __props__["ept_rvi_mode"] = ept_rvi_mode
        __props__["extra_config"] = extra_config
        __props__["firmware"] = firmware
        __props__["folder"] = folder
        __props__["force_power_off"] = force_power_off
        __props__["guest_id"] = guest_id
        __props__["guest_ip_addresses"] = guest_ip_addresses
        __props__["hardware_version"] = hardware_version
        __props__["host_system_id"] = host_system_id
        __props__["hv_mode"] = hv_mode
        __props__["ide_controller_count"] = ide_controller_count
        __props__["ignored_guest_ips"] = ignored_guest_ips
        __props__["imported"] = imported
        __props__["latency_sensitivity"] = latency_sensitivity
        __props__["memory"] = memory
        __props__["memory_hot_add_enabled"] = memory_hot_add_enabled
        __props__["memory_limit"] = memory_limit
        __props__["memory_reservation"] = memory_reservation
        __props__["memory_share_count"] = memory_share_count
        __props__["memory_share_level"] = memory_share_level
        __props__["migrate_wait_timeout"] = migrate_wait_timeout
        __props__["moid"] = moid
        __props__["name"] = name
        __props__["nested_hv_enabled"] = nested_hv_enabled
        __props__["network_interfaces"] = network_interfaces
        __props__["num_cores_per_socket"] = num_cores_per_socket
        __props__["num_cpus"] = num_cpus
        __props__["ovf_deploy"] = ovf_deploy
        __props__["pci_device_ids"] = pci_device_ids
        __props__["poweron_timeout"] = poweron_timeout
        __props__["reboot_required"] = reboot_required
        __props__["resource_pool_id"] = resource_pool_id
        __props__["run_tools_scripts_after_power_on"] = run_tools_scripts_after_power_on
        __props__["run_tools_scripts_after_resume"] = run_tools_scripts_after_resume
        __props__["run_tools_scripts_before_guest_reboot"] = run_tools_scripts_before_guest_reboot
        __props__["run_tools_scripts_before_guest_shutdown"] = run_tools_scripts_before_guest_shutdown
        __props__["run_tools_scripts_before_guest_standby"] = run_tools_scripts_before_guest_standby
        __props__["sata_controller_count"] = sata_controller_count
        __props__["scsi_bus_sharing"] = scsi_bus_sharing
        __props__["scsi_controller_count"] = scsi_controller_count
        __props__["scsi_type"] = scsi_type
        __props__["shutdown_wait_timeout"] = shutdown_wait_timeout
        __props__["storage_policy_id"] = storage_policy_id
        __props__["swap_placement_policy"] = swap_placement_policy
        __props__["sync_time_with_host"] = sync_time_with_host
        __props__["tags"] = tags
        __props__["uuid"] = uuid
        __props__["vapp"] = vapp
        __props__["vapp_transports"] = vapp_transports
        __props__["vmware_tools_status"] = vmware_tools_status
        __props__["vmx_path"] = vmx_path
        __props__["wait_for_guest_ip_timeout"] = wait_for_guest_ip_timeout
        __props__["wait_for_guest_net_routable"] = wait_for_guest_net_routable
        __props__["wait_for_guest_net_timeout"] = wait_for_guest_net_timeout
        return VirtualMachine(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="alternateGuestName")
    def alternate_guest_name(self) -> pulumi.Output[Optional[str]]:
        """
        The guest name for the operating system
        when `guest_id` is `other` or `other-64`.
        """
        return pulumi.get(self, "alternate_guest_name")

    @property
    @pulumi.getter
    def annotation(self) -> pulumi.Output[Optional[str]]:
        """
        A user-provided description of the virtual machine.
        The default is no annotation.
        """
        return pulumi.get(self, "annotation")

    @property
    @pulumi.getter(name="bootDelay")
    def boot_delay(self) -> pulumi.Output[Optional[int]]:
        """
        The number of milliseconds to wait before starting
        the boot sequence. The default is no delay.
        """
        return pulumi.get(self, "boot_delay")

    @property
    @pulumi.getter(name="bootRetryDelay")
    def boot_retry_delay(self) -> pulumi.Output[Optional[int]]:
        """
        The number of milliseconds to wait before
        retrying the boot sequence. This only valid if `boot_retry_enabled` is true.
        Default: `10000` (10 seconds).
        """
        return pulumi.get(self, "boot_retry_delay")

    @property
    @pulumi.getter(name="bootRetryEnabled")
    def boot_retry_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        If set to true, a virtual machine that
        fails to boot will try again after the delay defined in `boot_retry_delay`.
        Default: `false`.
        """
        return pulumi.get(self, "boot_retry_enabled")

    @property
    @pulumi.getter
    def cdrom(self) -> pulumi.Output[Optional['outputs.VirtualMachineCdrom']]:
        """
        A specification for a CDROM device on this virtual
        machine. See CDROM options below.
        """
        return pulumi.get(self, "cdrom")

    @property
    @pulumi.getter(name="changeVersion")
    def change_version(self) -> pulumi.Output[str]:
        """
        A unique identifier for a given version of the last
        configuration applied, such the timestamp of the last update to the
        configuration.
        """
        return pulumi.get(self, "change_version")

    @property
    @pulumi.getter
    def clone(self) -> pulumi.Output[Optional['outputs.VirtualMachineClone']]:
        """
        When specified, the VM will be created as a clone of a
        specified template. Optional customization options can be submitted as well.
        See creating a virtual machine from a
        template for more details.
        """
        return pulumi.get(self, "clone")

    @property
    @pulumi.getter(name="cpuHotAddEnabled")
    def cpu_hot_add_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow CPUs to be added to this virtual
        machine while it is running.
        """
        return pulumi.get(self, "cpu_hot_add_enabled")

    @property
    @pulumi.getter(name="cpuHotRemoveEnabled")
    def cpu_hot_remove_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow CPUs to be removed to this
        virtual machine while it is running.
        """
        return pulumi.get(self, "cpu_hot_remove_enabled")

    @property
    @pulumi.getter(name="cpuLimit")
    def cpu_limit(self) -> pulumi.Output[Optional[int]]:
        """
        The maximum amount of CPU (in MHz) that this virtual
        machine can consume, regardless of available resources. The default is no
        limit.
        """
        return pulumi.get(self, "cpu_limit")

    @property
    @pulumi.getter(name="cpuPerformanceCountersEnabled")
    def cpu_performance_counters_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Enable CPU performance
        counters on this virtual machine. Default: `false`.
        """
        return pulumi.get(self, "cpu_performance_counters_enabled")

    @property
    @pulumi.getter(name="cpuReservation")
    def cpu_reservation(self) -> pulumi.Output[Optional[int]]:
        """
        The amount of CPU (in MHz) that this virtual
        machine is guaranteed. The default is no reservation.
        """
        return pulumi.get(self, "cpu_reservation")

    @property
    @pulumi.getter(name="cpuShareCount")
    def cpu_share_count(self) -> pulumi.Output[int]:
        """
        The number of CPU shares allocated to the
        virtual machine when the `cpu_share_level` is `custom`.
        """
        return pulumi.get(self, "cpu_share_count")

    @property
    @pulumi.getter(name="cpuShareLevel")
    def cpu_share_level(self) -> pulumi.Output[Optional[str]]:
        """
        The allocation level for CPU resources. Can be
        one of `high`, `low`, `normal`, or `custom`. Default: `custom`.
        """
        return pulumi.get(self, "cpu_share_level")

    @property
    @pulumi.getter(name="customAttributes")
    def custom_attributes(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
        """
        Map of custom attribute ids to attribute
        value strings to set for virtual machine.
        """
        return pulumi.get(self, "custom_attributes")

    @property
    @pulumi.getter(name="datacenterId")
    def datacenter_id(self) -> pulumi.Output[Optional[str]]:
        """
        The datacenter id. Required only when deploying
        an ovf template.
        """
        return pulumi.get(self, "datacenter_id")

    @property
    @pulumi.getter(name="datastoreClusterId")
    def datastore_cluster_id(self) -> pulumi.Output[Optional[str]]:
        """
        The managed object reference
        ID of the datastore cluster ID to use. This setting
        applies to entire virtual machine and implies that you wish to use Storage
        DRS with this virtual machine. See the section on virtual machine
        migration for details on changing this value.
        """
        return pulumi.get(self, "datastore_cluster_id")

    @property
    @pulumi.getter(name="datastoreId")
    def datastore_id(self) -> pulumi.Output[str]:
        """
        The datastore ID that the ISO is located in.
        Requried for using a datastore ISO. Conflicts with `client_device`.
        """
        return pulumi.get(self, "datastore_id")

    @property
    @pulumi.getter(name="defaultIpAddress")
    def default_ip_address(self) -> pulumi.Output[str]:
        """
        The IP address selected by the provider to be used with
        any provisioners configured on this resource.
        Whenever possible, this is the first IPv4 address that is reachable through
        the default gateway configured on the machine, then the first reachable IPv6
        address, and then the first general discovered address if neither exist. If
        VMware tools is not running on the virtual machine, or if the VM is powered
        off, this value will be blank.
        """
        return pulumi.get(self, "default_ip_address")

    @property
    @pulumi.getter
    def disks(self) -> pulumi.Output[Sequence['outputs.VirtualMachineDisk']]:
        """
        A specification for a virtual disk device on this virtual
        machine. See disk options below.
        """
        return pulumi.get(self, "disks")

    @property
    @pulumi.getter(name="efiSecureBootEnabled")
    def efi_secure_boot_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        When the `firmware` type is set to is
        `efi`, this enables EFI secure boot. Default: `false`.
        """
        return pulumi.get(self, "efi_secure_boot_enabled")

    @property
    @pulumi.getter(name="enableDiskUuid")
    def enable_disk_uuid(self) -> pulumi.Output[Optional[bool]]:
        """
        Expose the UUIDs of attached virtual disks to
        the virtual machine, allowing access to them in the guest. Default: `false`.
        """
        return pulumi.get(self, "enable_disk_uuid")

    @property
    @pulumi.getter(name="enableLogging")
    def enable_logging(self) -> pulumi.Output[Optional[bool]]:
        """
        Enable logging of virtual machine events to a
        log file stored in the virtual machine directory. Default: `false`.
        """
        return pulumi.get(self, "enable_logging")

    @property
    @pulumi.getter(name="eptRviMode")
    def ept_rvi_mode(self) -> pulumi.Output[Optional[str]]:
        """
        The EPT/RVI (hardware memory virtualization)
        setting for this virtual machine. Can be one of `automatic`, `on`, or `off`.
        Default: `automatic`.
        """
        return pulumi.get(self, "ept_rvi_mode")

    @property
    @pulumi.getter(name="extraConfig")
    def extra_config(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
        """
        Extra configuration data for this virtual
        machine. Can be used to supply advanced parameters not normally in
        configuration, such as instance metadata.
        """
        return pulumi.get(self, "extra_config")

    @property
    @pulumi.getter
    def firmware(self) -> pulumi.Output[Optional[str]]:
        """
        The firmware interface to use on the virtual machine.
        Can be one of `bios` or `EFI`. Default: `bios`.
        """
        return pulumi.get(self, "firmware")

    @property
    @pulumi.getter
    def folder(self) -> pulumi.Output[Optional[str]]:
        """
        The path to the folder to put this virtual machine in,
        relative to the datacenter that the resource pool is in.
        """
        return pulumi.get(self, "folder")

    @property
    @pulumi.getter(name="forcePowerOff")
    def force_power_off(self) -> pulumi.Output[Optional[bool]]:
        """
        If a guest shutdown failed or timed out while
        updating or destroying (see
        `shutdown_wait_timeout`), force the power-off of
        the virtual machine. Default: `true`.
        """
        return pulumi.get(self, "force_power_off")

    @property
    @pulumi.getter(name="guestId")
    def guest_id(self) -> pulumi.Output[str]:
        """
        The guest ID for the operating system type. For a
        full list of possible values, see [here][vmware-docs-guest-ids]. Default: `other-64`.
        """
        return pulumi.get(self, "guest_id")

    @property
    @pulumi.getter(name="guestIpAddresses")
    def guest_ip_addresses(self) -> pulumi.Output[Sequence[str]]:
        """
        The current list of IP addresses on this machine,
        including the value of `default_ip_address`. If VMware tools is not running
        on the virtual machine, or if the VM is powered off, this list will be empty.
        * `moid`: The managed object reference ID of the created
        virtual machine.
        """
        return pulumi.get(self, "guest_ip_addresses")

    @property
    @pulumi.getter(name="hardwareVersion")
    def hardware_version(self) -> pulumi.Output[int]:
        """
        The hardware version number. Valid range
        is from 4 to 15. The hardware version cannot be downgraded. See [virtual
        machine hardware compatibility][virtual-machine-hardware-compatibility] for
        more details.
        """
        return pulumi.get(self, "hardware_version")

    @property
    @pulumi.getter(name="hostSystemId")
    def host_system_id(self) -> pulumi.Output[str]:
        """
        An optional managed object reference
        ID of a host to put this virtual machine on. See the
        section on virtual machine migration for
        details on changing this value. If a `host_system_id` is not supplied,
        vSphere will select a host in the resource pool to place the virtual machine,
        according to any defaults or DRS policies in place.
        """
        return pulumi.get(self, "host_system_id")

    @property
    @pulumi.getter(name="hvMode")
    def hv_mode(self) -> pulumi.Output[Optional[str]]:
        """
        The (non-nested) hardware virtualization setting for
        this virtual machine. Can be one of `hvAuto`, `hvOn`, or `hvOff`. Default:
        `hvAuto`.
        """
        return pulumi.get(self, "hv_mode")

    @property
    @pulumi.getter(name="ideControllerCount")
    def ide_controller_count(self) -> pulumi.Output[Optional[int]]:
        """
        The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks
        you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove
        controllers.
        """
        return pulumi.get(self, "ide_controller_count")

    @property
    @pulumi.getter(name="ignoredGuestIps")
    def ignored_guest_ips(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        List of IP addresses and CIDR networks to
        ignore while waiting for an available IP address using either of the waiters.
        Any IP addresses in this list will be ignored if they show up so that the
        waiter will continue to wait for a real IP address. Default: [].
        """
        return pulumi.get(self, "ignored_guest_ips")

    @property
    @pulumi.getter
    def imported(self) -> pulumi.Output[bool]:
        """
        This is flagged if the virtual machine has been imported, or the
        state has been migrated from a previous version of the resource. It
        influences the behavior of the first post-import apply operation. See the
        section on importing below.
        """
        return pulumi.get(self, "imported")

    @property
    @pulumi.getter(name="latencySensitivity")
    def latency_sensitivity(self) -> pulumi.Output[Optional[str]]:
        """
        Controls the scheduling delay of the
        virtual machine. Use a higher sensitivity for applications that require lower
        latency, such as VOIP, media player applications, or applications that
        require frequent access to mouse or keyboard devices. Can be one of `low`,
        `normal`, `medium`, or `high`.
        """
        return pulumi.get(self, "latency_sensitivity")

    @property
    @pulumi.getter
    def memory(self) -> pulumi.Output[Optional[int]]:
        """
        The size of the virtual machine's memory, in MB.
        Default: `1024` (1 GB).
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter(name="memoryHotAddEnabled")
    def memory_hot_add_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow memory to be added to this
        virtual machine while it is running.
        """
        return pulumi.get(self, "memory_hot_add_enabled")

    @property
    @pulumi.getter(name="memoryLimit")
    def memory_limit(self) -> pulumi.Output[Optional[int]]:
        """
        The maximum amount of memory (in MB) that this
        virtual machine can consume, regardless of available resources. The default
        is no limit.
        """
        return pulumi.get(self, "memory_limit")

    @property
    @pulumi.getter(name="memoryReservation")
    def memory_reservation(self) -> pulumi.Output[Optional[int]]:
        """
        The amount of memory (in MB) that this
        virtual machine is guaranteed. The default is no reservation.
        """
        return pulumi.get(self, "memory_reservation")

    @property
    @pulumi.getter(name="memoryShareCount")
    def memory_share_count(self) -> pulumi.Output[int]:
        """
        The number of memory shares allocated to
        the virtual machine when the `memory_share_level` is `custom`.
        """
        return pulumi.get(self, "memory_share_count")

    @property
    @pulumi.getter(name="memoryShareLevel")
    def memory_share_level(self) -> pulumi.Output[Optional[str]]:
        """
        The allocation level for memory resources.
        Can be one of `high`, `low`, `normal`, or `custom`. Default: `custom`.
        """
        return pulumi.get(self, "memory_share_level")

    @property
    @pulumi.getter(name="migrateWaitTimeout")
    def migrate_wait_timeout(self) -> pulumi.Output[Optional[int]]:
        """
        The amount of time, in minutes, to wait
        for a virtual machine migration to complete before failing. Default: 10
        minutes. Also see the section on virtual machine
        migration.
        """
        return pulumi.get(self, "migrate_wait_timeout")

    @property
    @pulumi.getter
    def moid(self) -> pulumi.Output[str]:
        """
        The machine object ID from VMWare
        """
        return pulumi.get(self, "moid")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        """
        An alias for both `label` and `path`, the latter when
        using `attach`. Required if not using `label`.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="nestedHvEnabled")
    def nested_hv_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Enable nested hardware virtualization on
        this virtual machine, facilitating nested virtualization in the guest.
        Default: `false`.
        """
        return pulumi.get(self, "nested_hv_enabled")

    @property
    @pulumi.getter(name="networkInterfaces")
    def network_interfaces(self) -> pulumi.Output[Optional[Sequence['outputs.VirtualMachineNetworkInterface']]]:
        """
        A specification for a virtual NIC on this
        virtual machine. See network interface options
        below.
        """
        return pulumi.get(self, "network_interfaces")

    @property
    @pulumi.getter(name="numCoresPerSocket")
    def num_cores_per_socket(self) -> pulumi.Output[Optional[int]]:
        """
        The number of cores per socket in this
        virtual machine. The number of vCPUs on the virtual machine will be
        `num_cpus` divided by `num_cores_per_socket`. If specified, the value
        supplied to `num_cpus` must be evenly divisible by this value. Default: `1`.
        """
        return pulumi.get(self, "num_cores_per_socket")

    @property
    @pulumi.getter(name="numCpus")
    def num_cpus(self) -> pulumi.Output[Optional[int]]:
        """
        The total number of virtual processor cores to assign
        to this virtual machine. Default: `1`.
        """
        return pulumi.get(self, "num_cpus")

    @property
    @pulumi.getter(name="ovfDeploy")
    def ovf_deploy(self) -> pulumi.Output[Optional['outputs.VirtualMachineOvfDeploy']]:
        """
        When specified, the VM will be deployed from the
        provided ovf/ova template. See creating a virtual machine from a
        ovf/ova template for more details.
        """
        return pulumi.get(self, "ovf_deploy")

    @property
    @pulumi.getter(name="pciDeviceIds")
    def pci_device_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        List of host PCI device IDs to create PCI
        passthroughs for.
        """
        return pulumi.get(self, "pci_device_ids")

    @property
    @pulumi.getter(name="poweronTimeout")
    def poweron_timeout(self) -> pulumi.Output[Optional[int]]:
        """
        The amount of time, in seconds, that we will be trying to power on a VM
        """
        return pulumi.get(self, "poweron_timeout")

    @property
    @pulumi.getter(name="rebootRequired")
    def reboot_required(self) -> pulumi.Output[bool]:
        """
        Value internal to the provider used to determine if a
        configuration set change requires a reboot. This value is only useful during
        an update process and gets reset on refresh.
        """
        return pulumi.get(self, "reboot_required")

    @property
    @pulumi.getter(name="resourcePoolId")
    def resource_pool_id(self) -> pulumi.Output[str]:
        """
        The managed object reference
        ID of the resource pool to put this virtual machine in.
        See the section on virtual machine migration
        for details on changing this value.
        """
        return pulumi.get(self, "resource_pool_id")

    @property
    @pulumi.getter(name="runToolsScriptsAfterPowerOn")
    def run_tools_scripts_after_power_on(self) -> pulumi.Output[Optional[bool]]:
        """
        Enable the execution of
        post-power-on scripts when VMware tools is installed. Default: `true`.
        """
        return pulumi.get(self, "run_tools_scripts_after_power_on")

    @property
    @pulumi.getter(name="runToolsScriptsAfterResume")
    def run_tools_scripts_after_resume(self) -> pulumi.Output[Optional[bool]]:
        """
        Enable the execution of
        post-resume scripts when VMware tools is installed. Default: `true`.
        """
        return pulumi.get(self, "run_tools_scripts_after_resume")

    @property
    @pulumi.getter(name="runToolsScriptsBeforeGuestReboot")
    def run_tools_scripts_before_guest_reboot(self) -> pulumi.Output[Optional[bool]]:
        """
        Enable the execution of
        pre-reboot scripts when VMware tools is installed. Default: `false`.
        """
        return pulumi.get(self, "run_tools_scripts_before_guest_reboot")

    @property
    @pulumi.getter(name="runToolsScriptsBeforeGuestShutdown")
    def run_tools_scripts_before_guest_shutdown(self) -> pulumi.Output[Optional[bool]]:
        """
        Enable the execution
        of pre-shutdown scripts when VMware tools is installed. Default: `true`.
        """
        return pulumi.get(self, "run_tools_scripts_before_guest_shutdown")

    @property
    @pulumi.getter(name="runToolsScriptsBeforeGuestStandby")
    def run_tools_scripts_before_guest_standby(self) -> pulumi.Output[Optional[bool]]:
        """
        Enable the execution of
        pre-standby scripts when VMware tools is installed. Default: `true`.
        """
        return pulumi.get(self, "run_tools_scripts_before_guest_standby")

    @property
    @pulumi.getter(name="sataControllerCount")
    def sata_controller_count(self) -> pulumi.Output[Optional[int]]:
        """
        The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks
        you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove
        controllers.
        """
        return pulumi.get(self, "sata_controller_count")

    @property
    @pulumi.getter(name="scsiBusSharing")
    def scsi_bus_sharing(self) -> pulumi.Output[Optional[str]]:
        """
        Mode for sharing the SCSI bus. The modes are
        physicalSharing, virtualSharing, and noSharing. Default: `noSharing`.
        """
        return pulumi.get(self, "scsi_bus_sharing")

    @property
    @pulumi.getter(name="scsiControllerCount")
    def scsi_controller_count(self) -> pulumi.Output[Optional[int]]:
        """
        The number of SCSI controllers that
        this provider manages on this virtual machine. This directly affects the amount
        of disks you can add to the virtual machine and the maximum disk unit number.
        Note that lowering this value does not remove controllers. Default: `1`.
        """
        return pulumi.get(self, "scsi_controller_count")

    @property
    @pulumi.getter(name="scsiType")
    def scsi_type(self) -> pulumi.Output[Optional[str]]:
        """
        The type of SCSI bus this virtual machine will have.
        Can be one of lsilogic (LSI Logic Parallel), lsilogic-sas (LSI Logic SAS) or
        pvscsi (VMware Paravirtual). Defualt: `pvscsi`.
        """
        return pulumi.get(self, "scsi_type")

    @property
    @pulumi.getter(name="shutdownWaitTimeout")
    def shutdown_wait_timeout(self) -> pulumi.Output[Optional[int]]:
        """
        The amount of time, in minutes, to wait
        for a graceful guest shutdown when making necessary updates to the virtual
        machine. If `force_power_off` is set to true, the VM will be force powered-off
        after this timeout, otherwise an error is returned. Default: 3 minutes.
        """
        return pulumi.get(self, "shutdown_wait_timeout")

    @property
    @pulumi.getter(name="storagePolicyId")
    def storage_policy_id(self) -> pulumi.Output[str]:
        """
        The UUID of the storage policy to assign to this disk.
        """
        return pulumi.get(self, "storage_policy_id")

    @property
    @pulumi.getter(name="swapPlacementPolicy")
    def swap_placement_policy(self) -> pulumi.Output[Optional[str]]:
        """
        The swap file placement policy for this
        virtual machine. Can be one of `inherit`, `hostLocal`, or `vmDirectory`.
        Default: `inherit`.
        """
        return pulumi.get(self, "swap_placement_policy")

    @property
    @pulumi.getter(name="syncTimeWithHost")
    def sync_time_with_host(self) -> pulumi.Output[Optional[bool]]:
        """
        Enable guest clock synchronization with
        the host. Requires VMware tools to be installed. Default: `false`.
        """
        return pulumi.get(self, "sync_time_with_host")

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        The IDs of any tags to attach to this resource.
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter
    def uuid(self) -> pulumi.Output[str]:
        """
        The UUID of the virtual disk's VMDK file. This is used to track the
        virtual disk on the virtual machine.
        """
        return pulumi.get(self, "uuid")

    @property
    @pulumi.getter
    def vapp(self) -> pulumi.Output[Optional['outputs.VirtualMachineVapp']]:
        """
        Optional vApp configuration. The only sub-key available
        is `properties`, which is a key/value map of properties for virtual machines
        imported from OVF or OVA files. See Using vApp properties to supply OVF/OVA
        configuration for
        more details.
        """
        return pulumi.get(self, "vapp")

    @property
    @pulumi.getter(name="vappTransports")
    def vapp_transports(self) -> pulumi.Output[Sequence[str]]:
        """
        Computed value which is only valid for cloned virtual
        machines. A list of vApp transport methods supported by the source virtual
        machine or template.
        """
        return pulumi.get(self, "vapp_transports")

    @property
    @pulumi.getter(name="vmwareToolsStatus")
    def vmware_tools_status(self) -> pulumi.Output[str]:
        """
        The state of VMware tools in the guest. This will
        determine the proper course of action for some device operations.
        """
        return pulumi.get(self, "vmware_tools_status")

    @property
    @pulumi.getter(name="vmxPath")
    def vmx_path(self) -> pulumi.Output[str]:
        """
        The path of the virtual machine's configuration file in the VM's
        datastore.
        """
        return pulumi.get(self, "vmx_path")

    @property
    @pulumi.getter(name="waitForGuestIpTimeout")
    def wait_for_guest_ip_timeout(self) -> pulumi.Output[Optional[int]]:
        """
        The amount of time, in minutes, to
        wait for an available guest IP address on this virtual machine. This should
        only be used if your version of VMware Tools does not allow the
        `wait_for_guest_net_timeout` waiter to be
        used. A value less than 1 disables the waiter. Default: 0.
        """
        return pulumi.get(self, "wait_for_guest_ip_timeout")

    @property
    @pulumi.getter(name="waitForGuestNetRoutable")
    def wait_for_guest_net_routable(self) -> pulumi.Output[Optional[bool]]:
        """
        Controls whether or not the guest
        network waiter waits for a routable address. When `false`, the waiter does
        not wait for a default gateway, nor are IP addresses checked against any
        discovered default gateways as part of its success criteria. This property is
        ignored if the `wait_for_guest_ip_timeout`
        waiter is used. Default: `true`.
        """
        return pulumi.get(self, "wait_for_guest_net_routable")

    @property
    @pulumi.getter(name="waitForGuestNetTimeout")
    def wait_for_guest_net_timeout(self) -> pulumi.Output[Optional[int]]:
        """
        The amount of time, in minutes, to
        wait for an available IP address on this virtual machine's NICs. Older
        versions of VMware Tools do not populate this property. In those cases, this
        waiter can be disabled and the
        `wait_for_guest_ip_timeout` waiter can be used
        instead. A value less than 1 disables the waiter. Default: 5 minutes.
        """
        return pulumi.get(self, "wait_for_guest_net_timeout")

    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

