<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/backupdr/v1/backupvault_gce.proto

namespace Google\Cloud\BackupDR\V1;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * ComputeInstanceRestoreProperties represents Compute Engine instance
 * properties to be overridden during restore.
 *
 * Generated from protobuf message <code>google.cloud.backupdr.v1.ComputeInstanceRestoreProperties</code>
 */
class ComputeInstanceRestoreProperties extends \Google\Protobuf\Internal\Message
{
    /**
     * Required. Name of the compute instance.
     *
     * Generated from protobuf field <code>optional string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    protected $name = null;
    /**
     * Optional. Controls for advanced machine-related behavior features.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.AdvancedMachineFeatures advanced_machine_features = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $advanced_machine_features = null;
    /**
     * Optional. Allows this instance to send and receive packets with
     * non-matching destination or source IPs.
     *
     * Generated from protobuf field <code>optional bool can_ip_forward = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $can_ip_forward = null;
    /**
     * Optional. Controls Confidential compute options on the instance
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.ConfidentialInstanceConfig confidential_instance_config = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $confidential_instance_config = null;
    /**
     * Optional. Whether the resource should be protected against deletion.
     *
     * Generated from protobuf field <code>optional bool deletion_protection = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $deletion_protection = null;
    /**
     * Optional. An optional description of this resource. Provide this property
     * when you create the resource.
     *
     * Generated from protobuf field <code>optional string description = 6 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $description = null;
    /**
     * Optional. Array of disks associated with this instance. Persistent disks
     * must be created before you can assign them. Source regional persistent
     * disks will be restored with default replica zones if not specified.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.AttachedDisk disks = 7 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    private $disks;
    /**
     * Optional. Enables display device for the instance.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.DisplayDevice display_device = 8 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $display_device = null;
    /**
     * Optional. A list of the type and count of accelerator cards attached to the
     * instance.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.AcceleratorConfig guest_accelerators = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    private $guest_accelerators;
    /**
     * Optional. Specifies the hostname of the instance. The specified hostname
     * must be RFC1035 compliant. If hostname is not specified, the default
     * hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global
     * DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal
     * DNS.
     *
     * Generated from protobuf field <code>optional string hostname = 10 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $hostname = null;
    /**
     * Optional. Encrypts suspended data for an instance with a
     * customer-managed encryption key.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.CustomerEncryptionKey instance_encryption_key = 11 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $instance_encryption_key = null;
    /**
     * Optional. KeyRevocationActionType of the instance.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.KeyRevocationActionType key_revocation_action_type = 12 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $key_revocation_action_type = null;
    /**
     * Optional. Labels to apply to this instance.
     *
     * Generated from protobuf field <code>map<string, string> labels = 13 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    private $labels;
    /**
     * Optional. Full or partial URL of the machine type resource to use for this
     * instance.
     *
     * Generated from protobuf field <code>optional string machine_type = 14 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $machine_type = null;
    /**
     * Optional. This includes custom metadata and predefined keys.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.Metadata metadata = 15 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $metadata = null;
    /**
     * Optional. Minimum CPU platform to use for this instance.
     *
     * Generated from protobuf field <code>optional string min_cpu_platform = 16 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $min_cpu_platform = null;
    /**
     * Optional. An array of network configurations for this instance. These
     * specify how interfaces are configured to interact with other network
     * services, such as connecting to the internet. Multiple interfaces are
     * supported per instance. Required to restore in different project or region.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.NetworkInterface network_interfaces = 17 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    private $network_interfaces;
    /**
     * Optional. Configure network performance such as egress bandwidth tier.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.NetworkPerformanceConfig network_performance_config = 18 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $network_performance_config = null;
    /**
     * Input only. Additional params passed with the request, but not persisted
     * as part of resource payload.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.InstanceParams params = 19 [(.google.api.field_behavior) = INPUT_ONLY];</code>
     */
    protected $params = null;
    /**
     * Optional. The private IPv6 google access type for the VM.
     * If not specified, use INHERIT_FROM_SUBNETWORK as default.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.ComputeInstanceRestoreProperties.InstancePrivateIpv6GoogleAccess private_ipv6_google_access = 20 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $private_ipv6_google_access = null;
    /**
     * Optional. Specifies the reservations that this instance can consume from.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.AllocationAffinity allocation_affinity = 21 [json_name = "reservationAffinity", (.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $allocation_affinity = null;
    /**
     * Optional. Resource policies applied to this instance.
     * By default, no resource policies will be applied.
     *
     * Generated from protobuf field <code>repeated string resource_policies = 22 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    private $resource_policies;
    /**
     * Optional. Sets the scheduling options for this instance.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.Scheduling scheduling = 23 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $scheduling = null;
    /**
     * Optional. A list of service accounts, with their specified scopes,
     * authorized for this instance. Only one service account per VM instance is
     * supported.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.ServiceAccount service_accounts = 24 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    private $service_accounts;
    /**
     * Optional. Tags to apply to this instance. Tags are used to identify valid
     * sources or targets for network firewalls and are specified by the client
     * during instance creation.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.Tags tags = 26 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $tags = null;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $name
     *           Required. Name of the compute instance.
     *     @type \Google\Cloud\BackupDR\V1\AdvancedMachineFeatures $advanced_machine_features
     *           Optional. Controls for advanced machine-related behavior features.
     *     @type bool $can_ip_forward
     *           Optional. Allows this instance to send and receive packets with
     *           non-matching destination or source IPs.
     *     @type \Google\Cloud\BackupDR\V1\ConfidentialInstanceConfig $confidential_instance_config
     *           Optional. Controls Confidential compute options on the instance
     *     @type bool $deletion_protection
     *           Optional. Whether the resource should be protected against deletion.
     *     @type string $description
     *           Optional. An optional description of this resource. Provide this property
     *           when you create the resource.
     *     @type array<\Google\Cloud\BackupDR\V1\AttachedDisk>|\Google\Protobuf\Internal\RepeatedField $disks
     *           Optional. Array of disks associated with this instance. Persistent disks
     *           must be created before you can assign them. Source regional persistent
     *           disks will be restored with default replica zones if not specified.
     *     @type \Google\Cloud\BackupDR\V1\DisplayDevice $display_device
     *           Optional. Enables display device for the instance.
     *     @type array<\Google\Cloud\BackupDR\V1\AcceleratorConfig>|\Google\Protobuf\Internal\RepeatedField $guest_accelerators
     *           Optional. A list of the type and count of accelerator cards attached to the
     *           instance.
     *     @type string $hostname
     *           Optional. Specifies the hostname of the instance. The specified hostname
     *           must be RFC1035 compliant. If hostname is not specified, the default
     *           hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global
     *           DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal
     *           DNS.
     *     @type \Google\Cloud\BackupDR\V1\CustomerEncryptionKey $instance_encryption_key
     *           Optional. Encrypts suspended data for an instance with a
     *           customer-managed encryption key.
     *     @type int $key_revocation_action_type
     *           Optional. KeyRevocationActionType of the instance.
     *     @type array|\Google\Protobuf\Internal\MapField $labels
     *           Optional. Labels to apply to this instance.
     *     @type string $machine_type
     *           Optional. Full or partial URL of the machine type resource to use for this
     *           instance.
     *     @type \Google\Cloud\BackupDR\V1\Metadata $metadata
     *           Optional. This includes custom metadata and predefined keys.
     *     @type string $min_cpu_platform
     *           Optional. Minimum CPU platform to use for this instance.
     *     @type array<\Google\Cloud\BackupDR\V1\NetworkInterface>|\Google\Protobuf\Internal\RepeatedField $network_interfaces
     *           Optional. An array of network configurations for this instance. These
     *           specify how interfaces are configured to interact with other network
     *           services, such as connecting to the internet. Multiple interfaces are
     *           supported per instance. Required to restore in different project or region.
     *     @type \Google\Cloud\BackupDR\V1\NetworkPerformanceConfig $network_performance_config
     *           Optional. Configure network performance such as egress bandwidth tier.
     *     @type \Google\Cloud\BackupDR\V1\InstanceParams $params
     *           Input only. Additional params passed with the request, but not persisted
     *           as part of resource payload.
     *     @type int $private_ipv6_google_access
     *           Optional. The private IPv6 google access type for the VM.
     *           If not specified, use INHERIT_FROM_SUBNETWORK as default.
     *     @type \Google\Cloud\BackupDR\V1\AllocationAffinity $allocation_affinity
     *           Optional. Specifies the reservations that this instance can consume from.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $resource_policies
     *           Optional. Resource policies applied to this instance.
     *           By default, no resource policies will be applied.
     *     @type \Google\Cloud\BackupDR\V1\Scheduling $scheduling
     *           Optional. Sets the scheduling options for this instance.
     *     @type array<\Google\Cloud\BackupDR\V1\ServiceAccount>|\Google\Protobuf\Internal\RepeatedField $service_accounts
     *           Optional. A list of service accounts, with their specified scopes,
     *           authorized for this instance. Only one service account per VM instance is
     *           supported.
     *     @type \Google\Cloud\BackupDR\V1\Tags $tags
     *           Optional. Tags to apply to this instance. Tags are used to identify valid
     *           sources or targets for network firewalls and are specified by the client
     *           during instance creation.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Backupdr\V1\BackupvaultGce::initOnce();
        parent::__construct($data);
    }

    /**
     * Required. Name of the compute instance.
     *
     * Generated from protobuf field <code>optional string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return string
     */
    public function getName()
    {
        return isset($this->name) ? $this->name : '';
    }

    public function hasName()
    {
        return isset($this->name);
    }

    public function clearName()
    {
        unset($this->name);
    }

    /**
     * Required. Name of the compute instance.
     *
     * Generated from protobuf field <code>optional string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param string $var
     * @return $this
     */
    public function setName($var)
    {
        GPBUtil::checkString($var, True);
        $this->name = $var;

        return $this;
    }

    /**
     * Optional. Controls for advanced machine-related behavior features.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.AdvancedMachineFeatures advanced_machine_features = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\BackupDR\V1\AdvancedMachineFeatures|null
     */
    public function getAdvancedMachineFeatures()
    {
        return $this->advanced_machine_features;
    }

    public function hasAdvancedMachineFeatures()
    {
        return isset($this->advanced_machine_features);
    }

    public function clearAdvancedMachineFeatures()
    {
        unset($this->advanced_machine_features);
    }

    /**
     * Optional. Controls for advanced machine-related behavior features.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.AdvancedMachineFeatures advanced_machine_features = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\BackupDR\V1\AdvancedMachineFeatures $var
     * @return $this
     */
    public function setAdvancedMachineFeatures($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\BackupDR\V1\AdvancedMachineFeatures::class);
        $this->advanced_machine_features = $var;

        return $this;
    }

    /**
     * Optional. Allows this instance to send and receive packets with
     * non-matching destination or source IPs.
     *
     * Generated from protobuf field <code>optional bool can_ip_forward = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return bool
     */
    public function getCanIpForward()
    {
        return isset($this->can_ip_forward) ? $this->can_ip_forward : false;
    }

    public function hasCanIpForward()
    {
        return isset($this->can_ip_forward);
    }

    public function clearCanIpForward()
    {
        unset($this->can_ip_forward);
    }

    /**
     * Optional. Allows this instance to send and receive packets with
     * non-matching destination or source IPs.
     *
     * Generated from protobuf field <code>optional bool can_ip_forward = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param bool $var
     * @return $this
     */
    public function setCanIpForward($var)
    {
        GPBUtil::checkBool($var);
        $this->can_ip_forward = $var;

        return $this;
    }

    /**
     * Optional. Controls Confidential compute options on the instance
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.ConfidentialInstanceConfig confidential_instance_config = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\BackupDR\V1\ConfidentialInstanceConfig|null
     */
    public function getConfidentialInstanceConfig()
    {
        return $this->confidential_instance_config;
    }

    public function hasConfidentialInstanceConfig()
    {
        return isset($this->confidential_instance_config);
    }

    public function clearConfidentialInstanceConfig()
    {
        unset($this->confidential_instance_config);
    }

    /**
     * Optional. Controls Confidential compute options on the instance
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.ConfidentialInstanceConfig confidential_instance_config = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\BackupDR\V1\ConfidentialInstanceConfig $var
     * @return $this
     */
    public function setConfidentialInstanceConfig($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\BackupDR\V1\ConfidentialInstanceConfig::class);
        $this->confidential_instance_config = $var;

        return $this;
    }

    /**
     * Optional. Whether the resource should be protected against deletion.
     *
     * Generated from protobuf field <code>optional bool deletion_protection = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return bool
     */
    public function getDeletionProtection()
    {
        return isset($this->deletion_protection) ? $this->deletion_protection : false;
    }

    public function hasDeletionProtection()
    {
        return isset($this->deletion_protection);
    }

    public function clearDeletionProtection()
    {
        unset($this->deletion_protection);
    }

    /**
     * Optional. Whether the resource should be protected against deletion.
     *
     * Generated from protobuf field <code>optional bool deletion_protection = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param bool $var
     * @return $this
     */
    public function setDeletionProtection($var)
    {
        GPBUtil::checkBool($var);
        $this->deletion_protection = $var;

        return $this;
    }

    /**
     * Optional. An optional description of this resource. Provide this property
     * when you create the resource.
     *
     * Generated from protobuf field <code>optional string description = 6 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getDescription()
    {
        return isset($this->description) ? $this->description : '';
    }

    public function hasDescription()
    {
        return isset($this->description);
    }

    public function clearDescription()
    {
        unset($this->description);
    }

    /**
     * Optional. An optional description of this resource. Provide this property
     * when you create the resource.
     *
     * Generated from protobuf field <code>optional string description = 6 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setDescription($var)
    {
        GPBUtil::checkString($var, True);
        $this->description = $var;

        return $this;
    }

    /**
     * Optional. Array of disks associated with this instance. Persistent disks
     * must be created before you can assign them. Source regional persistent
     * disks will be restored with default replica zones if not specified.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.AttachedDisk disks = 7 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getDisks()
    {
        return $this->disks;
    }

    /**
     * Optional. Array of disks associated with this instance. Persistent disks
     * must be created before you can assign them. Source regional persistent
     * disks will be restored with default replica zones if not specified.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.AttachedDisk disks = 7 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param array<\Google\Cloud\BackupDR\V1\AttachedDisk>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setDisks($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\BackupDR\V1\AttachedDisk::class);
        $this->disks = $arr;

        return $this;
    }

    /**
     * Optional. Enables display device for the instance.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.DisplayDevice display_device = 8 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\BackupDR\V1\DisplayDevice|null
     */
    public function getDisplayDevice()
    {
        return $this->display_device;
    }

    public function hasDisplayDevice()
    {
        return isset($this->display_device);
    }

    public function clearDisplayDevice()
    {
        unset($this->display_device);
    }

    /**
     * Optional. Enables display device for the instance.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.DisplayDevice display_device = 8 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\BackupDR\V1\DisplayDevice $var
     * @return $this
     */
    public function setDisplayDevice($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\BackupDR\V1\DisplayDevice::class);
        $this->display_device = $var;

        return $this;
    }

    /**
     * Optional. A list of the type and count of accelerator cards attached to the
     * instance.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.AcceleratorConfig guest_accelerators = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getGuestAccelerators()
    {
        return $this->guest_accelerators;
    }

    /**
     * Optional. A list of the type and count of accelerator cards attached to the
     * instance.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.AcceleratorConfig guest_accelerators = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param array<\Google\Cloud\BackupDR\V1\AcceleratorConfig>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setGuestAccelerators($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\BackupDR\V1\AcceleratorConfig::class);
        $this->guest_accelerators = $arr;

        return $this;
    }

    /**
     * Optional. Specifies the hostname of the instance. The specified hostname
     * must be RFC1035 compliant. If hostname is not specified, the default
     * hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global
     * DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal
     * DNS.
     *
     * Generated from protobuf field <code>optional string hostname = 10 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getHostname()
    {
        return isset($this->hostname) ? $this->hostname : '';
    }

    public function hasHostname()
    {
        return isset($this->hostname);
    }

    public function clearHostname()
    {
        unset($this->hostname);
    }

    /**
     * Optional. Specifies the hostname of the instance. The specified hostname
     * must be RFC1035 compliant. If hostname is not specified, the default
     * hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global
     * DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal
     * DNS.
     *
     * Generated from protobuf field <code>optional string hostname = 10 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setHostname($var)
    {
        GPBUtil::checkString($var, True);
        $this->hostname = $var;

        return $this;
    }

    /**
     * Optional. Encrypts suspended data for an instance with a
     * customer-managed encryption key.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.CustomerEncryptionKey instance_encryption_key = 11 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\BackupDR\V1\CustomerEncryptionKey|null
     */
    public function getInstanceEncryptionKey()
    {
        return $this->instance_encryption_key;
    }

    public function hasInstanceEncryptionKey()
    {
        return isset($this->instance_encryption_key);
    }

    public function clearInstanceEncryptionKey()
    {
        unset($this->instance_encryption_key);
    }

    /**
     * Optional. Encrypts suspended data for an instance with a
     * customer-managed encryption key.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.CustomerEncryptionKey instance_encryption_key = 11 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\BackupDR\V1\CustomerEncryptionKey $var
     * @return $this
     */
    public function setInstanceEncryptionKey($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\BackupDR\V1\CustomerEncryptionKey::class);
        $this->instance_encryption_key = $var;

        return $this;
    }

    /**
     * Optional. KeyRevocationActionType of the instance.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.KeyRevocationActionType key_revocation_action_type = 12 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return int
     */
    public function getKeyRevocationActionType()
    {
        return isset($this->key_revocation_action_type) ? $this->key_revocation_action_type : 0;
    }

    public function hasKeyRevocationActionType()
    {
        return isset($this->key_revocation_action_type);
    }

    public function clearKeyRevocationActionType()
    {
        unset($this->key_revocation_action_type);
    }

    /**
     * Optional. KeyRevocationActionType of the instance.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.KeyRevocationActionType key_revocation_action_type = 12 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param int $var
     * @return $this
     */
    public function setKeyRevocationActionType($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\BackupDR\V1\KeyRevocationActionType::class);
        $this->key_revocation_action_type = $var;

        return $this;
    }

    /**
     * Optional. Labels to apply to this instance.
     *
     * Generated from protobuf field <code>map<string, string> labels = 13 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Protobuf\Internal\MapField
     */
    public function getLabels()
    {
        return $this->labels;
    }

    /**
     * Optional. Labels to apply to this instance.
     *
     * Generated from protobuf field <code>map<string, string> labels = 13 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param array|\Google\Protobuf\Internal\MapField $var
     * @return $this
     */
    public function setLabels($var)
    {
        $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
        $this->labels = $arr;

        return $this;
    }

    /**
     * Optional. Full or partial URL of the machine type resource to use for this
     * instance.
     *
     * Generated from protobuf field <code>optional string machine_type = 14 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getMachineType()
    {
        return isset($this->machine_type) ? $this->machine_type : '';
    }

    public function hasMachineType()
    {
        return isset($this->machine_type);
    }

    public function clearMachineType()
    {
        unset($this->machine_type);
    }

    /**
     * Optional. Full or partial URL of the machine type resource to use for this
     * instance.
     *
     * Generated from protobuf field <code>optional string machine_type = 14 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setMachineType($var)
    {
        GPBUtil::checkString($var, True);
        $this->machine_type = $var;

        return $this;
    }

    /**
     * Optional. This includes custom metadata and predefined keys.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.Metadata metadata = 15 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\BackupDR\V1\Metadata|null
     */
    public function getMetadata()
    {
        return $this->metadata;
    }

    public function hasMetadata()
    {
        return isset($this->metadata);
    }

    public function clearMetadata()
    {
        unset($this->metadata);
    }

    /**
     * Optional. This includes custom metadata and predefined keys.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.Metadata metadata = 15 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\BackupDR\V1\Metadata $var
     * @return $this
     */
    public function setMetadata($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\BackupDR\V1\Metadata::class);
        $this->metadata = $var;

        return $this;
    }

    /**
     * Optional. Minimum CPU platform to use for this instance.
     *
     * Generated from protobuf field <code>optional string min_cpu_platform = 16 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getMinCpuPlatform()
    {
        return isset($this->min_cpu_platform) ? $this->min_cpu_platform : '';
    }

    public function hasMinCpuPlatform()
    {
        return isset($this->min_cpu_platform);
    }

    public function clearMinCpuPlatform()
    {
        unset($this->min_cpu_platform);
    }

    /**
     * Optional. Minimum CPU platform to use for this instance.
     *
     * Generated from protobuf field <code>optional string min_cpu_platform = 16 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setMinCpuPlatform($var)
    {
        GPBUtil::checkString($var, True);
        $this->min_cpu_platform = $var;

        return $this;
    }

    /**
     * Optional. An array of network configurations for this instance. These
     * specify how interfaces are configured to interact with other network
     * services, such as connecting to the internet. Multiple interfaces are
     * supported per instance. Required to restore in different project or region.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.NetworkInterface network_interfaces = 17 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getNetworkInterfaces()
    {
        return $this->network_interfaces;
    }

    /**
     * Optional. An array of network configurations for this instance. These
     * specify how interfaces are configured to interact with other network
     * services, such as connecting to the internet. Multiple interfaces are
     * supported per instance. Required to restore in different project or region.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.NetworkInterface network_interfaces = 17 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param array<\Google\Cloud\BackupDR\V1\NetworkInterface>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setNetworkInterfaces($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\BackupDR\V1\NetworkInterface::class);
        $this->network_interfaces = $arr;

        return $this;
    }

    /**
     * Optional. Configure network performance such as egress bandwidth tier.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.NetworkPerformanceConfig network_performance_config = 18 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\BackupDR\V1\NetworkPerformanceConfig|null
     */
    public function getNetworkPerformanceConfig()
    {
        return $this->network_performance_config;
    }

    public function hasNetworkPerformanceConfig()
    {
        return isset($this->network_performance_config);
    }

    public function clearNetworkPerformanceConfig()
    {
        unset($this->network_performance_config);
    }

    /**
     * Optional. Configure network performance such as egress bandwidth tier.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.NetworkPerformanceConfig network_performance_config = 18 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\BackupDR\V1\NetworkPerformanceConfig $var
     * @return $this
     */
    public function setNetworkPerformanceConfig($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\BackupDR\V1\NetworkPerformanceConfig::class);
        $this->network_performance_config = $var;

        return $this;
    }

    /**
     * Input only. Additional params passed with the request, but not persisted
     * as part of resource payload.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.InstanceParams params = 19 [(.google.api.field_behavior) = INPUT_ONLY];</code>
     * @return \Google\Cloud\BackupDR\V1\InstanceParams|null
     */
    public function getParams()
    {
        return $this->params;
    }

    public function hasParams()
    {
        return isset($this->params);
    }

    public function clearParams()
    {
        unset($this->params);
    }

    /**
     * Input only. Additional params passed with the request, but not persisted
     * as part of resource payload.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.InstanceParams params = 19 [(.google.api.field_behavior) = INPUT_ONLY];</code>
     * @param \Google\Cloud\BackupDR\V1\InstanceParams $var
     * @return $this
     */
    public function setParams($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\BackupDR\V1\InstanceParams::class);
        $this->params = $var;

        return $this;
    }

    /**
     * Optional. The private IPv6 google access type for the VM.
     * If not specified, use INHERIT_FROM_SUBNETWORK as default.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.ComputeInstanceRestoreProperties.InstancePrivateIpv6GoogleAccess private_ipv6_google_access = 20 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return int
     */
    public function getPrivateIpv6GoogleAccess()
    {
        return isset($this->private_ipv6_google_access) ? $this->private_ipv6_google_access : 0;
    }

    public function hasPrivateIpv6GoogleAccess()
    {
        return isset($this->private_ipv6_google_access);
    }

    public function clearPrivateIpv6GoogleAccess()
    {
        unset($this->private_ipv6_google_access);
    }

    /**
     * Optional. The private IPv6 google access type for the VM.
     * If not specified, use INHERIT_FROM_SUBNETWORK as default.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.ComputeInstanceRestoreProperties.InstancePrivateIpv6GoogleAccess private_ipv6_google_access = 20 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param int $var
     * @return $this
     */
    public function setPrivateIpv6GoogleAccess($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\BackupDR\V1\ComputeInstanceRestoreProperties\InstancePrivateIpv6GoogleAccess::class);
        $this->private_ipv6_google_access = $var;

        return $this;
    }

    /**
     * Optional. Specifies the reservations that this instance can consume from.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.AllocationAffinity allocation_affinity = 21 [json_name = "reservationAffinity", (.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\BackupDR\V1\AllocationAffinity|null
     */
    public function getAllocationAffinity()
    {
        return $this->allocation_affinity;
    }

    public function hasAllocationAffinity()
    {
        return isset($this->allocation_affinity);
    }

    public function clearAllocationAffinity()
    {
        unset($this->allocation_affinity);
    }

    /**
     * Optional. Specifies the reservations that this instance can consume from.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.AllocationAffinity allocation_affinity = 21 [json_name = "reservationAffinity", (.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\BackupDR\V1\AllocationAffinity $var
     * @return $this
     */
    public function setAllocationAffinity($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\BackupDR\V1\AllocationAffinity::class);
        $this->allocation_affinity = $var;

        return $this;
    }

    /**
     * Optional. Resource policies applied to this instance.
     * By default, no resource policies will be applied.
     *
     * Generated from protobuf field <code>repeated string resource_policies = 22 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getResourcePolicies()
    {
        return $this->resource_policies;
    }

    /**
     * Optional. Resource policies applied to this instance.
     * By default, no resource policies will be applied.
     *
     * Generated from protobuf field <code>repeated string resource_policies = 22 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setResourcePolicies($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->resource_policies = $arr;

        return $this;
    }

    /**
     * Optional. Sets the scheduling options for this instance.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.Scheduling scheduling = 23 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\BackupDR\V1\Scheduling|null
     */
    public function getScheduling()
    {
        return $this->scheduling;
    }

    public function hasScheduling()
    {
        return isset($this->scheduling);
    }

    public function clearScheduling()
    {
        unset($this->scheduling);
    }

    /**
     * Optional. Sets the scheduling options for this instance.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.Scheduling scheduling = 23 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\BackupDR\V1\Scheduling $var
     * @return $this
     */
    public function setScheduling($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\BackupDR\V1\Scheduling::class);
        $this->scheduling = $var;

        return $this;
    }

    /**
     * Optional. A list of service accounts, with their specified scopes,
     * authorized for this instance. Only one service account per VM instance is
     * supported.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.ServiceAccount service_accounts = 24 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getServiceAccounts()
    {
        return $this->service_accounts;
    }

    /**
     * Optional. A list of service accounts, with their specified scopes,
     * authorized for this instance. Only one service account per VM instance is
     * supported.
     *
     * Generated from protobuf field <code>repeated .google.cloud.backupdr.v1.ServiceAccount service_accounts = 24 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param array<\Google\Cloud\BackupDR\V1\ServiceAccount>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setServiceAccounts($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\BackupDR\V1\ServiceAccount::class);
        $this->service_accounts = $arr;

        return $this;
    }

    /**
     * Optional. Tags to apply to this instance. Tags are used to identify valid
     * sources or targets for network firewalls and are specified by the client
     * during instance creation.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.Tags tags = 26 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\BackupDR\V1\Tags|null
     */
    public function getTags()
    {
        return $this->tags;
    }

    public function hasTags()
    {
        return isset($this->tags);
    }

    public function clearTags()
    {
        unset($this->tags);
    }

    /**
     * Optional. Tags to apply to this instance. Tags are used to identify valid
     * sources or targets for network firewalls and are specified by the client
     * during instance creation.
     *
     * Generated from protobuf field <code>optional .google.cloud.backupdr.v1.Tags tags = 26 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\BackupDR\V1\Tags $var
     * @return $this
     */
    public function setTags($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\BackupDR\V1\Tags::class);
        $this->tags = $var;

        return $this;
    }

}

