def __init__(__self__, *, advanced_machine_features: Optional[pulumi.Input['AdvancedMachineFeaturesArgs']]=None, can_ip_forward: Optional[pulumi.Input[bool]]=None, confidential_instance_config: Optional[pulumi.Input['ConfidentialInstanceConfigArgs']]=None, description: Optional[pulumi.Input[str]]=None, disks: Optional[pulumi.Input[Sequence[pulumi.Input['AttachedDiskArgs']]]]=None, display_device: Optional[pulumi.Input['DisplayDeviceArgs']]=None, guest_accelerators: Optional[pulumi.Input[Sequence[pulumi.Input['AcceleratorConfigArgs']]]]=None, key_revocation_action_type: Optional[pulumi.Input['InstancePropertiesKeyRevocationActionType']]=None, labels: Optional[pulumi.Input[Mapping[(str, pulumi.Input[str])]]]=None, machine_type: Optional[pulumi.Input[str]]=None, metadata: Optional[pulumi.Input['MetadataArgs']]=None, min_cpu_platform: Optional[pulumi.Input[str]]=None, network_interfaces: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkInterfaceArgs']]]]=None, network_performance_config: Optional[pulumi.Input['NetworkPerformanceConfigArgs']]=None, post_key_revocation_action_type: Optional[pulumi.Input['InstancePropertiesPostKeyRevocationActionType']]=None, private_ipv6_google_access: Optional[pulumi.Input['InstancePropertiesPrivateIpv6GoogleAccess']]=None, reservation_affinity: Optional[pulumi.Input['ReservationAffinityArgs']]=None, resource_manager_tags: Optional[pulumi.Input[Mapping[(str, pulumi.Input[str])]]]=None, resource_policies: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]=None, scheduling: Optional[pulumi.Input['SchedulingArgs']]=None, secure_tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]=None, service_accounts: Optional[pulumi.Input[Sequence[pulumi.Input['ServiceAccountArgs']]]]=None, shielded_instance_config: Optional[pulumi.Input['ShieldedInstanceConfigArgs']]=None, shielded_vm_config: Optional[pulumi.Input['ShieldedVmConfigArgs']]=None, tags: Optional[pulumi.Input['TagsArgs']]=None):
    '\n        :param pulumi.Input[\'AdvancedMachineFeaturesArgs\'] advanced_machine_features: Controls for advanced machine-related behavior features. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[bool] can_ip_forward: Enables instances created based on these properties to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information.\n        :param pulumi.Input[\'ConfidentialInstanceConfigArgs\'] confidential_instance_config: Specifies the Confidential Instance options. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[str] description: An optional text description for the instances that are created from these properties.\n        :param pulumi.Input[Sequence[pulumi.Input[\'AttachedDiskArgs\']]] disks: An array of disks that are associated with the instances that are created from these properties.\n        :param pulumi.Input[\'DisplayDeviceArgs\'] display_device: Display Device properties to enable support for remote display products like: Teradici, VNC and TeamViewer Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[Sequence[pulumi.Input[\'AcceleratorConfigArgs\']]] guest_accelerators: A list of guest accelerator cards\' type and count to use for instances created from these properties.\n        :param pulumi.Input[\'InstancePropertiesKeyRevocationActionType\'] key_revocation_action_type: KeyRevocationActionType of the instance.\n        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Labels to apply to instances that are created from these properties.\n        :param pulumi.Input[str] machine_type: The machine type to use for instances that are created from these properties.\n        :param pulumi.Input[\'MetadataArgs\'] metadata: The metadata key/value pairs to assign to instances that are created from these properties. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information.\n        :param pulumi.Input[str] min_cpu_platform: Minimum cpu/platform to be used by instances. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: "Intel Haswell" or minCpuPlatform: "Intel Sandy Bridge". For more information, read Specifying a Minimum CPU Platform.\n        :param pulumi.Input[Sequence[pulumi.Input[\'NetworkInterfaceArgs\']]] network_interfaces: An array of network access configurations for this interface.\n        :param pulumi.Input[\'NetworkPerformanceConfigArgs\'] network_performance_config: Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[\'InstancePropertiesPostKeyRevocationActionType\'] post_key_revocation_action_type: PostKeyRevocationActionType of the instance.\n        :param pulumi.Input[\'InstancePropertiesPrivateIpv6GoogleAccess\'] private_ipv6_google_access: The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[\'ReservationAffinityArgs\'] reservation_affinity: Specifies the reservations that instances can consume from. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_manager_tags: Resource manager tags to be bound to the instance. Tag keys and values have the same definition as resource manager tags. Keys must be in the format `tagKeys/{tag_key_id}`, and values are in the format `tagValues/456`. The field is ignored (both PUT & PATCH) when empty.\n        :param pulumi.Input[Sequence[pulumi.Input[str]]] resource_policies: Resource policies (names, not URLs) applied to instances created from these properties. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[\'SchedulingArgs\'] scheduling: Specifies the scheduling options for the instances that are created from these properties.\n        :param pulumi.Input[Sequence[pulumi.Input[str]]] secure_tags: [Input Only] Secure tags to apply to this instance. Maximum number of secure tags allowed is 50. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[Sequence[pulumi.Input[\'ServiceAccountArgs\']]] service_accounts: A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from these properties. Use metadata queries to obtain the access tokens for these instances.\n        :param pulumi.Input[\'ShieldedInstanceConfigArgs\'] shielded_instance_config: Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[\'ShieldedVmConfigArgs\'] shielded_vm_config: Specifies the Shielded VM options for the instances that are created from these properties.\n        :param pulumi.Input[\'TagsArgs\'] tags: A list of tags to apply to the instances that are created from these properties. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035.\n        '
    if (advanced_machine_features is not None):
        pulumi.set(__self__, 'advanced_machine_features', advanced_machine_features)
    if (can_ip_forward is not None):
        pulumi.set(__self__, 'can_ip_forward', can_ip_forward)
    if (confidential_instance_config is not None):
        pulumi.set(__self__, 'confidential_instance_config', confidential_instance_config)
    if (description is not None):
        pulumi.set(__self__, 'description', description)
    if (disks is not None):
        pulumi.set(__self__, 'disks', disks)
    if (display_device is not None):
        pulumi.set(__self__, 'display_device', display_device)
    if (guest_accelerators is not None):
        pulumi.set(__self__, 'guest_accelerators', guest_accelerators)
    if (key_revocation_action_type is not None):
        pulumi.set(__self__, 'key_revocation_action_type', key_revocation_action_type)
    if (labels is not None):
        pulumi.set(__self__, 'labels', labels)
    if (machine_type is not None):
        pulumi.set(__self__, 'machine_type', machine_type)
    if (metadata is not None):
        pulumi.set(__self__, 'metadata', metadata)
    if (min_cpu_platform is not None):
        pulumi.set(__self__, 'min_cpu_platform', min_cpu_platform)
    if (network_interfaces is not None):
        pulumi.set(__self__, 'network_interfaces', network_interfaces)
    if (network_performance_config is not None):
        pulumi.set(__self__, 'network_performance_config', network_performance_config)
    if (post_key_revocation_action_type is not None):
        pulumi.set(__self__, 'post_key_revocation_action_type', post_key_revocation_action_type)
    if (private_ipv6_google_access is not None):
        pulumi.set(__self__, 'private_ipv6_google_access', private_ipv6_google_access)
    if (reservation_affinity is not None):
        pulumi.set(__self__, 'reservation_affinity', reservation_affinity)
    if (resource_manager_tags is not None):
        pulumi.set(__self__, 'resource_manager_tags', resource_manager_tags)
    if (resource_policies is not None):
        pulumi.set(__self__, 'resource_policies', resource_policies)
    if (scheduling is not None):
        pulumi.set(__self__, 'scheduling', scheduling)
    if (secure_tags is not None):
        pulumi.set(__self__, 'secure_tags', secure_tags)
    if (service_accounts is not None):
        pulumi.set(__self__, 'service_accounts', service_accounts)
    if (shielded_instance_config is not None):
        pulumi.set(__self__, 'shielded_instance_config', shielded_instance_config)
    if (shielded_vm_config is not None):
        pulumi.set(__self__, 'shielded_vm_config', shielded_vm_config)
    if (tags is not None):
        pulumi.set(__self__, 'tags', tags)
:param pulumi.Input['AdvancedMachineFeaturesArgs'] advanced_machine_features: Controls for advanced machine-related behavior features. Note that for MachineImage, this is not supported yet.
:param pulumi.Input[bool] can_ip_forward: Enables instances created based on these properties to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information.
:param pulumi.Input['ConfidentialInstanceConfigArgs'] confidential_instance_config: Specifies the Confidential Instance options. Note that for MachineImage, this is not supported yet.
:param pulumi.Input[str] description: An optional text description for the instances that are created from these properties.
:param pulumi.Input[Sequence[pulumi.Input['AttachedDiskArgs']]] disks: An array of disks that are associated with the instances that are created from these properties.
:param pulumi.Input['DisplayDeviceArgs'] display_device: Display Device properties to enable support for remote display products like: Teradici, VNC and TeamViewer Note that for MachineImage, this is not supported yet.
:param pulumi.Input[Sequence[pulumi.Input['AcceleratorConfigArgs']]] guest_accelerators: A list of guest accelerator cards' type and count to use for instances created from these properties.
:param pulumi.Input['InstancePropertiesKeyRevocationActionType'] key_revocation_action_type: KeyRevocationActionType of the instance.
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Labels to apply to instances that are created from these properties.
:param pulumi.Input[str] machine_type: The machine type to use for instances that are created from these properties.
:param pulumi.Input['MetadataArgs'] metadata: The metadata key/value pairs to assign to instances that are created from these properties. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information.
:param pulumi.Input[str] min_cpu_platform: Minimum cpu/platform to be used by instances. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: "Intel Haswell" or minCpuPlatform: "Intel Sandy Bridge". For more information, read Specifying a Minimum CPU Platform.
:param pulumi.Input[Sequence[pulumi.Input['NetworkInterfaceArgs']]] network_interfaces: An array of network access configurations for this interface.
:param pulumi.Input['NetworkPerformanceConfigArgs'] network_performance_config: Note that for MachineImage, this is not supported yet.
:param pulumi.Input['InstancePropertiesPostKeyRevocationActionType'] post_key_revocation_action_type: PostKeyRevocationActionType of the instance.
:param pulumi.Input['InstancePropertiesPrivateIpv6GoogleAccess'] private_ipv6_google_access: The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet.
:param pulumi.Input['ReservationAffinityArgs'] reservation_affinity: Specifies the reservations that instances can consume from. Note that for MachineImage, this is not supported yet.
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_manager_tags: Resource manager tags to be bound to the instance. Tag keys and values have the same definition as resource manager tags. Keys must be in the format `tagKeys/{tag_key_id}`, and values are in the format `tagValues/456`. The field is ignored (both PUT & PATCH) when empty.
:param pulumi.Input[Sequence[pulumi.Input[str]]] resource_policies: Resource policies (names, not URLs) applied to instances created from these properties. Note that for MachineImage, this is not supported yet.
:param pulumi.Input['SchedulingArgs'] scheduling: Specifies the scheduling options for the instances that are created from these properties.
:param pulumi.Input[Sequence[pulumi.Input[str]]] secure_tags: [Input Only] Secure tags to apply to this instance. Maximum number of secure tags allowed is 50. Note that for MachineImage, this is not supported yet.
:param pulumi.Input[Sequence[pulumi.Input['ServiceAccountArgs']]] service_accounts: A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from these properties. Use metadata queries to obtain the access tokens for these instances.
:param pulumi.Input['ShieldedInstanceConfigArgs'] shielded_instance_config: Note that for MachineImage, this is not supported yet.
:param pulumi.Input['ShieldedVmConfigArgs'] shielded_vm_config: Specifies the Shielded VM options for the instances that are created from these properties.
:param pulumi.Input['TagsArgs'] tags: A list of tags to apply to the instances that are created from these properties. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035.
def __init__(__self__, *, advanced_machine_features: Optional[pulumi.Input['AdvancedMachineFeaturesArgs']]=None, can_ip_forward: Optional[pulumi.Input[bool]]=None, confidential_instance_config: Optional[pulumi.Input['ConfidentialInstanceConfigArgs']]=None, description: Optional[pulumi.Input[str]]=None, disks: Optional[pulumi.Input[Sequence[pulumi.Input['AttachedDiskArgs']]]]=None, display_device: Optional[pulumi.Input['DisplayDeviceArgs']]=None, guest_accelerators: Optional[pulumi.Input[Sequence[pulumi.Input['AcceleratorConfigArgs']]]]=None, key_revocation_action_type: Optional[pulumi.Input['InstancePropertiesKeyRevocationActionType']]=None, labels: Optional[pulumi.Input[Mapping[(str, pulumi.Input[str])]]]=None, machine_type: Optional[pulumi.Input[str]]=None, metadata: Optional[pulumi.Input['MetadataArgs']]=None, min_cpu_platform: Optional[pulumi.Input[str]]=None, network_interfaces: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkInterfaceArgs']]]]=None, network_performance_config: Optional[pulumi.Input['NetworkPerformanceConfigArgs']]=None, post_key_revocation_action_type: Optional[pulumi.Input['InstancePropertiesPostKeyRevocationActionType']]=None, private_ipv6_google_access: Optional[pulumi.Input['InstancePropertiesPrivateIpv6GoogleAccess']]=None, reservation_affinity: Optional[pulumi.Input['ReservationAffinityArgs']]=None, resource_manager_tags: Optional[pulumi.Input[Mapping[(str, pulumi.Input[str])]]]=None, resource_policies: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]=None, scheduling: Optional[pulumi.Input['SchedulingArgs']]=None, secure_tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]=None, service_accounts: Optional[pulumi.Input[Sequence[pulumi.Input['ServiceAccountArgs']]]]=None, shielded_instance_config: Optional[pulumi.Input['ShieldedInstanceConfigArgs']]=None, shielded_vm_config: Optional[pulumi.Input['ShieldedVmConfigArgs']]=None, tags: Optional[pulumi.Input['TagsArgs']]=None):
    '\n        :param pulumi.Input[\'AdvancedMachineFeaturesArgs\'] advanced_machine_features: Controls for advanced machine-related behavior features. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[bool] can_ip_forward: Enables instances created based on these properties to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information.\n        :param pulumi.Input[\'ConfidentialInstanceConfigArgs\'] confidential_instance_config: Specifies the Confidential Instance options. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[str] description: An optional text description for the instances that are created from these properties.\n        :param pulumi.Input[Sequence[pulumi.Input[\'AttachedDiskArgs\']]] disks: An array of disks that are associated with the instances that are created from these properties.\n        :param pulumi.Input[\'DisplayDeviceArgs\'] display_device: Display Device properties to enable support for remote display products like: Teradici, VNC and TeamViewer Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[Sequence[pulumi.Input[\'AcceleratorConfigArgs\']]] guest_accelerators: A list of guest accelerator cards\' type and count to use for instances created from these properties.\n        :param pulumi.Input[\'InstancePropertiesKeyRevocationActionType\'] key_revocation_action_type: KeyRevocationActionType of the instance.\n        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Labels to apply to instances that are created from these properties.\n        :param pulumi.Input[str] machine_type: The machine type to use for instances that are created from these properties.\n        :param pulumi.Input[\'MetadataArgs\'] metadata: The metadata key/value pairs to assign to instances that are created from these properties. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information.\n        :param pulumi.Input[str] min_cpu_platform: Minimum cpu/platform to be used by instances. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: "Intel Haswell" or minCpuPlatform: "Intel Sandy Bridge". For more information, read Specifying a Minimum CPU Platform.\n        :param pulumi.Input[Sequence[pulumi.Input[\'NetworkInterfaceArgs\']]] network_interfaces: An array of network access configurations for this interface.\n        :param pulumi.Input[\'NetworkPerformanceConfigArgs\'] network_performance_config: Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[\'InstancePropertiesPostKeyRevocationActionType\'] post_key_revocation_action_type: PostKeyRevocationActionType of the instance.\n        :param pulumi.Input[\'InstancePropertiesPrivateIpv6GoogleAccess\'] private_ipv6_google_access: The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[\'ReservationAffinityArgs\'] reservation_affinity: Specifies the reservations that instances can consume from. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_manager_tags: Resource manager tags to be bound to the instance. Tag keys and values have the same definition as resource manager tags. Keys must be in the format `tagKeys/{tag_key_id}`, and values are in the format `tagValues/456`. The field is ignored (both PUT & PATCH) when empty.\n        :param pulumi.Input[Sequence[pulumi.Input[str]]] resource_policies: Resource policies (names, not URLs) applied to instances created from these properties. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[\'SchedulingArgs\'] scheduling: Specifies the scheduling options for the instances that are created from these properties.\n        :param pulumi.Input[Sequence[pulumi.Input[str]]] secure_tags: [Input Only] Secure tags to apply to this instance. Maximum number of secure tags allowed is 50. Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[Sequence[pulumi.Input[\'ServiceAccountArgs\']]] service_accounts: A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from these properties. Use metadata queries to obtain the access tokens for these instances.\n        :param pulumi.Input[\'ShieldedInstanceConfigArgs\'] shielded_instance_config: Note that for MachineImage, this is not supported yet.\n        :param pulumi.Input[\'ShieldedVmConfigArgs\'] shielded_vm_config: Specifies the Shielded VM options for the instances that are created from these properties.\n        :param pulumi.Input[\'TagsArgs\'] tags: A list of tags to apply to the instances that are created from these properties. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035.\n        '
    if (advanced_machine_features is not None):
        pulumi.set(__self__, 'advanced_machine_features', advanced_machine_features)
    if (can_ip_forward is not None):
        pulumi.set(__self__, 'can_ip_forward', can_ip_forward)
    if (confidential_instance_config is not None):
        pulumi.set(__self__, 'confidential_instance_config', confidential_instance_config)
    if (description is not None):
        pulumi.set(__self__, 'description', description)
    if (disks is not None):
        pulumi.set(__self__, 'disks', disks)
    if (display_device is not None):
        pulumi.set(__self__, 'display_device', display_device)
    if (guest_accelerators is not None):
        pulumi.set(__self__, 'guest_accelerators', guest_accelerators)
    if (key_revocation_action_type is not None):
        pulumi.set(__self__, 'key_revocation_action_type', key_revocation_action_type)
    if (labels is not None):
        pulumi.set(__self__, 'labels', labels)
    if (machine_type is not None):
        pulumi.set(__self__, 'machine_type', machine_type)
    if (metadata is not None):
        pulumi.set(__self__, 'metadata', metadata)
    if (min_cpu_platform is not None):
        pulumi.set(__self__, 'min_cpu_platform', min_cpu_platform)
    if (network_interfaces is not None):
        pulumi.set(__self__, 'network_interfaces', network_interfaces)
    if (network_performance_config is not None):
        pulumi.set(__self__, 'network_performance_config', network_performance_config)
    if (post_key_revocation_action_type is not None):
        pulumi.set(__self__, 'post_key_revocation_action_type', post_key_revocation_action_type)
    if (private_ipv6_google_access is not None):
        pulumi.set(__self__, 'private_ipv6_google_access', private_ipv6_google_access)
    if (reservation_affinity is not None):
        pulumi.set(__self__, 'reservation_affinity', reservation_affinity)
    if (resource_manager_tags is not None):
        pulumi.set(__self__, 'resource_manager_tags', resource_manager_tags)
    if (resource_policies is not None):
        pulumi.set(__self__, 'resource_policies', resource_policies)
    if (scheduling is not None):
        pulumi.set(__self__, 'scheduling', scheduling)
    if (secure_tags is not None):
        pulumi.set(__self__, 'secure_tags', secure_tags)
    if (service_accounts is not None):
        pulumi.set(__self__, 'service_accounts', service_accounts)
    if (shielded_instance_config is not None):
        pulumi.set(__self__, 'shielded_instance_config', shielded_instance_config)
    if (shielded_vm_config is not None):
        pulumi.set(__self__, 'shielded_vm_config', shielded_vm_config)
    if (tags is not None):
        pulumi.set(__self__, 'tags', tags)